gpt4 book ai didi

hadoop - Spark 是否支持 With 子句?

转载 作者:可可西里 更新时间:2023-11-01 14:19:30 24 4
gpt4 key购买 nike

我在 spark 中有一个表employee_1,带有属性 id 和 name(带有数据),另一个表 employee_2 具有相同的属性,我想通过增加带有 +1 的 id 值

我的 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。
  2. RDD 到 Hive 临时表
  3. 从临时表到 Hive Target (employee_2)。

当我从后端运行测试程序时,它成功了。但数据未加载。 employee_2 为空。

注意:如果您在 Hive 中运行上面的 with 子句,它将成功并加载数据。但是在 spark 中它不会在 1.6 中?

最佳答案

问题不是 WITH 语句,而是导致问题的 INSERT INTO 语句。

这是一个使用 .insertInto() 样式而不是“INSERT INTO”SQL 的工作示例:

val s = Seq((1,"foo"), (2, "bar"))
s: Seq[(Int, String)] = List((1,foo), (2,bar))
val df = s.toDF("id", "name")
df.registerTempTable("df")
sql("CREATE TABLE edf_final (id int, name string)")
val e = sql("WITH edf AS (SELECT id+1, name FROM df cook) SELECT * FROM edf")
e.insertInto("edf_final")

另一种选择是使用 df.write.mode("append").saveAsTable("edf_final") 样式。

相关SO:"INSERT INTO ..." with SparkSQL HiveContext

关于hadoop - Spark 是否支持 With 子句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43979730/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com