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

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

问题描述:

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如何使用python执行spark中的.sql文件

y4j.protocol.Py4JJavaError: An error occurred while calling o20.sql. : java.lang.RuntimeException: [1.1] failure: ``with'' expected but `/' found

/home/ubuntu/workload/queryXX.sql

at scala.sys.package$.error(package.scala:27) 

我很新的火花,我需要帮助这里继续前进。

我不确定它会回答你的问题。但是,如果你打算运行在现有的表查询,您可以使用,

spark-sql -i <Filename_with abs path/.sql> 

还有一件事,如果你有pyspark脚本,您可以使用here火花提交的细节。

SqlContext.sql预计有效的SQL查询不是文件的路径。试试这个:

with open("/home/ubuntu/workload/queryXX.sql") as fr: 
    query = fr.read() 
results = sqlContext.sql(query) 

运行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