我在Spark中有一个表employee_1
,它有属性id和name(带有数据),还有一个表employee_2
,它有相同的属性。我想通过将id值增加+1来加载数据。
我的 WITH 子句如下:
WITH EXP AS (SELECT ALIASNAME.ID+1 ID, ALIASNAME.NAME NAME FROM employee_1 ALIASNAME)
INSERT INTO TABLE employee_2 SELECT * FROM EXP;
字符串
执行步骤:
我在HDFS位置有一个文件(包含数据)。
1.根据HDFS位置创建RDD。
- RDD到Hive临时表
1.从临时表到配置单元目标(配置单元_2)。
当我从后台运行一个测试程序时,它成功了。但是数据没有加载。employee_2
是空的。
注意事项:
如果你在Hive中运行上面的 WITH 子句,它会成功,数据会加载。但在Spark中,它不会在1.6中。为什么?
2条答案
按热度按时间irlmq6kh1#
WITH语句不是问题所在,而是INSERT INTO语句造成了问题。
下面是一个使用.insertInto()样式而不是“INSERT INTO”SQL的工作示例:
字符串
另一个选项是使用
df.write.mode("append").saveAsTable("edf_final")
样式。相关SO:"INSERT INTO ..." with SparkSQL HiveContext
ma8fv8wu2#
因为答案是针对Spark 2.x的,所以我以Spark 3的方式重写它。
字符串
测试结果:
型