无法从 spark 创建 Hive 表

Posted

技术标签:

【中文标题】无法从 spark 创建 Hive 表【英文标题】:Unable to create Hive table from spark 【发布时间】:2018-03-06 09:43:56 【问题描述】:

我正在尝试使用 Spark 创建配置单元表。 我收到以下错误 -

 +- TungstenAggregate(key=[rpt_prd#244,country_code#240,product_code#242], functions=[(count(1),mode=Partial,isDistinct=false)], output=[rpt_prd#244,co
untry_code#240,product_code#242,count#832L])
                     +- HiveTableScan [rpt_prd#244,country_code#240,product_code#242], MetastoreRelation gfrrtnsd_standardization, pln_arrg_dim, None, [(country_code#24
0 = HK)]

org.apache.spark.sql.catalyst.errors.package$TreeNodeException: execute, tree:
TungstenExchange hashpartitioning(rpt_prd#236,200), None
+- Sort [rpt_prd#236 ASC], true, 0
   +- ConvertToUnsafe
      +- Exchange rangepartitioning(rpt_prd#236 ASC,200), None
         +- ConvertToSafe
            +- TungstenAggregate(key=[rpt_prd#244,country_code#240,product_code#242], functions=[(count(1),mode=Final,isDistinct=false)], output=[rpt_prd#236,Dim_countr
y_code#237,Dim_product_code#238,Dim_recordCount#239L])
               +- TungstenExchange hashpartitioning(rpt_prd#244,country_code#240,product_code#242,200), None
                  +- TungstenAggregate(key=[rpt_prd#244,country_code#240,product_code#242], functions=[(count(1),mode=Partial,isDistinct=false)], output=[rpt_prd#244,co
untry_code#240,product_c`enter code here`ode#242,count#832L])
                     +- HiveTableScan [rpt_prd#244,country_code#240,product_code#242], MetastoreRelation gfrrtnsd_standardization, pln_arrg_dim, None, [(country_code#24
0 = HK)]

请协助从 spark 中创建 hive 表。

【问题讨论】:

【参考方案1】:

大多数树节点异常将发生在以下情况。

假设您有一个数据框 df1,并通过应用一些转换创建了一个新的数据框 df2,而后者将 df1 与 df2 连接会导致最近版本中的树树节点异常。

所以解决方案可能是

您必须创建数据框 df1 并创建一个与 df1 相同的新数据框 df2 并在 df2 上应用转换并创建 df3 然后使用 df3 和 df1 进行连接操作。

【讨论】:

感谢您必须创建数据框 df1 并创建一个与 df1 相同的新数据框 df2 并在 df2 上应用转换并创建 df3 然后使用 df3 和 df1 进行连接操作。 谢谢阿秋。请为“”您必须创建数据框 df1 并创建与 df1 相同的新数据框 df2 并在 df2 上应用转换并创建 df3 然后使用 df3 和 df1 进行连接操作”提供更多详细信息。”我不太清楚跨度> 我使用的是 spark 1.6

以上是关于无法从 spark 创建 Hive 表的主要内容,如果未能解决你的问题,请参考以下文章

使用 API 而不是 SQL 从 Spark 创建 Hive 表?

带有 hive 的 pyspark - 无法正确创建分区并从数据框中保存表

无法指向使用来自 spark 的配置单元创建的外部表

无法从 impala/hive/spark sql 访问“spark 注册表”

通过 Spark 加载的表在 Hive 中无法访问

无法通过 PySpark 访问 Hive