将spark.sql数据框结果写入拼花文件

时间:2019-12-09 11:34:35

标签: apache-spark hive pyspark hdfs

我启用了以下spark.sql会话:

import socket

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
host = '192.168.1.162'  # The IP printed by the server must be set here

# or we can set it using env variable named SERVER_IP
if 'SERVER_IP' in os.environ:
    host = os.environ['SERVER_IP']

port = 12048

print("Connecting to {}:{}".format(host, port))
s.connect((host, port))

msg = s.recv(1024)
print(msg.decode("utf-8"))

并能够产生以下查询的结果:

# creating Spark context and connection
spark = (SparkSession.builder.appName("appName").enableHiveSupport().getOrCreate())

但是,当我尝试将查询中的结果数据帧写入hdfs时,出现以下错误:

saving spark.sql.dataframe.DataFrame in hdfs

我能够将此查询的简单版本的结果数据框保存到同一路径。通过添加诸如count(),year()等功能会出现问题。

是什么问题?以及如何将结果保存到hdfs?

1 个答案:

答案 0 :(得分:3)

由于'('出现在'year(CAST(plt_date AS DATE)))列中,因此出现错误:

用于重命名:

data = data.selectExpr("year(CAST(plt_date AS DATE)) as nameofcolumn")

如果可以投票

引用:Rename Spark Column