from pyspark import SparkConf, SparkContext
from pyspark.sql import SQLContext
conf = SparkConf().setAppName("Test").set("spark.driver.memory", "1g")
sc = SparkContext(conf = conf)
sqlContext = SQLContext(sc)
results = sqlContext.sql("/home/ubuntu/workload/queryXX.sql")
当我使用python test.py
执行此命令时,它会给我一个error
。
y4j.protocol.Py4JJavaError:调用o20.sql时发生错误。 :java.lang.RuntimeException:[1.1]失败:``用''期待但是`/'结果
/home/ubuntu/workload/queryXX.sql
at scala.sys.package$.error(package.scala:27)
我对Spark很新,我需要帮助才能继续前进。
答案 0 :(得分:3)
SqlContext.sql
期望有效的SQL查询不是文件的路径。试试这个:
with open("/home/ubuntu/workload/queryXX.sql") as fr:
query = fr.read()
results = sqlContext.sql(query)
答案 1 :(得分:3)
运行spark-sql --help
会给你
CLI options:
-d,--define <key=value> Variable subsitution to apply to hive
commands. e.g. -d A=B or --define A=B
--database <databasename> Specify the database to use
-e <quoted-query-string> SQL from command line
-f <filename> SQL from files
-H,--help Print help information
--hiveconf <property=value> Use value for given property
--hivevar <key=value> Variable subsitution to apply to hive
commands. e.g. --hivevar A=B
-i <filename> Initialization SQL file
-S,--silent Silent mode in interactive shell
-v,--verbose Verbose mode (echo executed SQL to the
console)
所以你可以像这样执行你的sql脚本:
spark-sql -f <your-script>.sql
答案 2 :(得分:0)
我不确定它会回答你的问题。但是,如果您打算在现有表上运行查询,则可以使用
spark-sql -i <Filename_with abs path/.sql>
还有一件事,如果您有pyspark脚本,可以在here中使用spark-submit详细信息。