繁体   English   中英

Spark:如何在横向视图中包含空行爆炸

Spark: How to include null rows in lateral view explode

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我有一张桌子,如下所示:

user_id email
u1      e1, e2
u2      null

我的目标是将其转换为以下格式:

user_id email
u1      e1
u1      e2
u2      null

HIVE sql:select * FROM表横向视图爆炸(split(email,','))email AS email_id

当在蜂巢中执行上述查询时,我得到的是空值,但是当在spark-sql中运行相同的查询时,我没有得到的是空值,此问题和场景已在此处讨论

Spark sql

  1. select * FROM table LATERAL VIEW OUTER explode ( split ( email ,',' ) ) email AS email_id;
  2. select * from table lateral view POSEXPLODE_OUTER(split(email,',')) email as email_id <br>

第二个失败是语法问题,我尝试使用posexplode_outer搜索侧面视图,但无法获得太多结果,我想在spark-sql中引入null。

3 个回复

Spark SQL不使用HiveQL。 它与它部分兼容,但不要误解。 而不是使用LATERAL VIEW您应该只使用SELECT

Seq(
  ("u1", "e1, e2"), ("u2", null)
).toDF("user_id", "email").createOrReplaceTempView("table")

spark.sql(
    "SELECT user_id, explode_outer(split(email, ',')) FROM table"
).show
// +-------+----+                               
// |user_id| col|
// +-------+----+
// |     u1|  e1|
// |     u1|  e2|
// |     u2|null|
// +-------+----+

拆分后添加coalesce似乎可行

with tmp_table as ( 
  select 'u1' as user, 'e1,e2' as email 
  union all 
  select 'u2' as user, NULL as email
)
select * FROM tmp_table 
LATERAL VIEW explode ( coalesce(split ( email ,',' ), array(NULL)) ) email AS email_id;

输出

u1  e1,e2   e1
u1  e1,e2   e2
u2  NULL    NULL

在Spark 2.2.0中添加了LATERAL VIEW OUTER

例如

scala> spark.sql( | "select * FROM table LATERAL VIEW OUTER explode ( split ( email ,',' ) ) email AS email_id" | ).show +-------+------+--------+
|user_id| email|email_id| +-------+------+--------+ | u1|e1, e2| e1| | u1|e1, e2| e2| | u2| null| null| +-------+------+--------+

1 HIVE:如何在横向视图中包含空行爆炸

我有一个表如下: 我的目标是将其转换为以下格式: 因此,为此我在 Hive 中使用了横向视图爆炸()函数,如下所示: 但是这样做会跳过 u2 行,因为它在电子邮件中具有空值。 我们如何在输出中也包含空值? 编辑:我正在使用一种解决方法将这个表与基表结合起来而不会爆炸,但我认为数据将因此 ...

5 蜂巢横向视图爆炸

我有一个数据在其中一个字段中有嵌套映射。 例如,数据位于名为“customers”的表中,如下所示: 姓名:比尔琼斯 地址:{“billing”:{“street”:“123 Main”,“city”:“Chicago”,“state”:“IL”},“shipping”:{“str ...

2017-02-22 22:14:57 2 4220   hive
6 蜂巢-横向视图爆炸xpath

我有以下输入XML: 请注意员工1111中缺少的名字 我正在执行以下选择: 预期结果: 请注意,缺少的名字为NULL值) 但是我得到以下结果: 2222福尔摩斯 由于缺少员工1111的名字,因此我没有在查询中找回第一位员工。 有没有一种方法可以将 ...

7 横向视图爆炸奇怪的行为

我正在连接两个数组列并将它们转换回数组。 现在当我申请爆炸时,什么也没有发生。 使用 Spark 2.3。 这里有什么奇怪的吗? 请注意,我可以通过 但只是想知道为什么第一种方法不起作用。 ...

2019-11-05 13:49:03 2 58   pyspark
9 如何在横向视图中以颤动播放视频?

我的资产文件夹中有一个视频,当我尝试代码时,它给出了一些例外。 谁能帮我? 我只是希望视频应该以横向模式全屏运行。 我已经导入了所有必要的包并更改了 pubspec.yaml 文件。 它正在播放视频,但未以全屏横向模式播放。 ...

10 列表视图中的空行

我创建了一个与适配器关联的listView。 问题是即使我从创建的视图中设置了textview,行仍显示为空。 我提到列表视图的行数是正确的。 谢谢。 shopping_page_item 适配器 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM