繁体   English   中英

如何使用 python 在 spark 中加载 sql 文件

[英]How to load sql file in spark using python

我的pySpark版本是2.4,python版本是2.7。 我有多行 sql 文件需要在 spark 中运行。 是否可以将 sql 文件保留在 python(初始化 spark)中并使用 spark-submit 执行它,而不是逐行运行? 我正在尝试在 python 中编写一个通用脚本,以便我们稍后只需要从 hdfs 文件夹中替换 sql 文件。 下面是我的代码片段。

import sys
from pyspark.sql import SparkSession
import pyspark.sql.functions as F

args = str(sys.argv[1]).split(',')

fd = args[0]
ld = args[1]
sd = args[2]

#Below line does not work
df = open("test.sql")
query = df.read().format(fd,ld,sd)

#Initiating SparkSession.
spark = SparkSession.builder.appName("PC").enableHiveSupport().getOrCreate()


#Below line works fine
df_s=spark.sql("""select * from test_tbl where batch_date='2021-08-01'""")

#Execute the sql (Does not work now)
df_s1=spark.sql(query)

spark-submit 为上述代码抛出以下错误。

线程“main”中的异常 org.apache.spark.SparkException:应用程序 application_1643050700073_7491 在 org.apache.spark.deploy.yarn.Client.run(Client.scala:1158) 在 org.883520deploys.88396 处以失败状态完成yarn.YarnClusterApplication.start(Client.scala:1606) 在 org.apache.spark.deploy.SparkSubmit.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:847) 在 org.8830202839 .SparkSubmit.doRunMain$1(SparkSubmit.scala:161) at org.apache.spark.deploy.SparkSubmit.submit(SparkSubmit.scala:184) at org.apache.spark.deploy.SparkSubmit.doSubmit(SparkSubmit.scala:86) at org.apache.spark.deploy.SparkSubmit$$anon$2.doSubmit(SparkSubmit.scala:922) at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:931) at org.apache.spark. deploy.SparkSubmit.main(SparkSubmit.scala) 22/02/10 01:24:52 INFO util.ShutdownHookManag 呃:调用了关机钩子

我在 pyspark 相对较新。有人可以指导我在这里缺少什么吗?

您不能在本地目录上运行 pyspark。 如果要对 HDFS 中的文件执行 sql 语句,则必须首先将 HDFS 中的文件放在本地目录中。

参考spark 2.4.0 Spark Documentation ,你可以简单地使用pyspark API。

from os.path import expanduser, join, abspath   
from pyspark.sql import SparkSession
from pyspark.sql import Row

spark.sql("YOUR QUERY").show()

或直接查询文件:

df = spark.sql("SELECT * FROM parquet.`examples/src/main/resources/users.parquet`")

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM