如何使用python在spark中执行.sql文件

时间:2015-10-06 03:31:53

标签: python apache-spark apache-spark-sql pyspark

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很新,我需要帮助才能继续前进。

3 个答案:

答案 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详细信息。