Pyspark - 将数据保存到 Hive 表时出错“未解析的运算符'InsertIntoTable HiveTableRelation'”
Posted
技术标签:
【中文标题】Pyspark - 将数据保存到 Hive 表时出错“未解析的运算符\'InsertIntoTable HiveTableRelation\'”【英文标题】:Pyspark - error when save data into Hive table "unresolved operator 'InsertIntoTable HiveTableRelation'"Pyspark - 将数据保存到 Hive 表时出错“未解析的运算符'InsertIntoTable HiveTableRelation'” 【发布时间】:2019-04-25 10:57:45 【问题描述】:我使用以下:
pyspark 库,2.3.1 版 python,版本 2.7.1 hadoop,2.7.3 版 配置单元,版本 1.2.1000.2.6.5.30-1 火花版本 2我的蜂巢表如下所示:
CREATE TABLE IF NOT EXISTS my_database.my_table
(
division STRING COMMENT 'Sample column'
)
我想使用 pyspark 将数据保存到 HIVE。我使用以下代码:
spark_session = SparkSession.builder.getOrCreate()
hive_context = HiveContext(spark_session.sparkContext)
hive_table_schema = hive_context.table("my_database.my_table").schema
df_to_save = spark_session.createDataFrame([["a"],["b"],["c"]], schema=hive_table_schema)
df_to_save.write.mode("append").insertInto("my_database.my_table")
但是出现以下错误:
Traceback (most recent call last):
File "/home/my_user/mantis service_quality_check__global/scripts/row_counts_preprocess.py", line 147, in <module> df_to_save.write.mode("append").insertInto(hive_table_row_counts_str)
File "/usr/hdp/current/spark2-client/python/lib/pyspark.zip/pyspark/sql/readwriter.py", line 716, in insertInto
File "/usr/hdp/current/spark2-client/python/lib/py4j-0.10.6-src.zip/py4j/java_gateway.py", line 1160, in __call__
File "/usr/hdp/current/spark2-client/python/lib/pyspark.zip/pyspark/sql/utils.py", line 69, in deco
pyspark.sql.utils.AnalysisException: u"unresolved operator 'InsertIntoTable HiveTableRelation `my_database`.`my_table`, org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe, [division#14], false, false;;\n'InsertIntoTable HiveTableRelation `my_database`.`my_table`, org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe, [division#14], false, false\n+- LogicalRDD [division#2], false\n"
请问有人可以帮忙吗?我被这几天困住了
【问题讨论】:
【参考方案1】:我发现了问题。 SparkSession 必须支持 hive。创建 spark session 时必须调用 enableHiveSupport() 方法。
然后 Spark 会话的创建将如下所示
spark_session = SparkSession.builder.enableHiveSupport().getOrCreate()
【讨论】:
以上是关于Pyspark - 将数据保存到 Hive 表时出错“未解析的运算符'InsertIntoTable HiveTableRelation'”的主要内容,如果未能解决你的问题,请参考以下文章
带有 hive 的 pyspark - 无法正确创建分区并从数据框中保存表
Pyspark Dataframe:无法保存为 Hive 表
Pyspark - 将数据保存到 Hive 表时出错“未解析的运算符'InsertIntoTable HiveTableRelation'”