相关疑难解决方法(0)

Spark DataFrame嵌套结构是否仅限于选择?

我有一个带有一些数据的json文件,我能够从中创建DataFrame,并且我感兴趣的特定部分的模式如下所示:

val json: DataFrame = sqlc.load("entities_with_address2.json", "json")

root
 |-- attributes: struct (nullable = true)
 |    |-- Address2: array (nullable = true)
 |    |    |-- value: struct (nullable = true)
 |    |    |    |-- Zip: array (nullable = true)
 |    |    |    |    |-- element: struct (containsNull = true)
 |    |    |    |    |    |-- value: struct (nullable = true)
 |    |    |    |    |    |    |-- Zip5: array (nullable = true)
 |    |    |    |    |    |    |    |-- element: …
Run Code Online (Sandbox Code Playgroud)

apache-spark apache-spark-sql

21
推荐指数
1
解决办法
2万
查看次数

11
推荐指数
1
解决办法
2万
查看次数

以后如何用键加入数组来取消加入?

我有两张桌子,即table1table2.table1很大,而table2小.另外,我有一个UDF函数,其接口定义如下:

--table1--
id
1
2
3

--table2--
category
a
b
c
d
e
f
g

UDF: foo(id: Int): List[String]
Run Code Online (Sandbox Code Playgroud)

我打算首先调用UDF获取相应的类别:foo(table1.id),它将返回一个WrappedArray,然后我想加入每个category进行table2更多的操作.预期结果应如下所示:

--view--

id,category
1,a
1,c
1,d
2,b
2,c
3,e
3,f
3,g
Run Code Online (Sandbox Code Playgroud)

我试图在Hive中找到一个不需要的方法,但没有运气,有人可以帮助我吗?谢谢!

hive hiveql apache-spark apache-spark-sql

4
推荐指数
1
解决办法
2883
查看次数

如何在Scala/Spark中扩展Dataframe中的数组

我使用Databricks spark-xml包将一个XML文件读入Spark.该文件具有以下数据结构:

<lib>
 <element>
  <genre>Thriller</genre>
  <dates>
   <date>2000-10-01</date>
   <date>2020-10-01</date>
  </dates>
 </element>
 <element>
  <genre>SciFi</genre>
  <dates>
   <date>2015-10-01</date>
  </dates>
 </element>
</lib>    
Run Code Online (Sandbox Code Playgroud)

加载数据后,我得到一个看起来像这样的数据框:

root
 |-- genre: string (nullable = true)
 |-- publish_dates: struct (nullable = true)
 |    |-- publish_date: array (nullable = true)
 |    |    |-- element: string (containsNull = true)
Run Code Online (Sandbox Code Playgroud)

并且"show"产生以下结果:

gerne | dates
Th... | [WrappedArray(20...
Run Code Online (Sandbox Code Playgroud)

是否有可能以下列形式获得此结果:

gerne | date
Th... | 2000-...
Th... | 2020-...
Sci.. | 2015-...
Run Code Online (Sandbox Code Playgroud)

我已经尝试过:

val rdd = df.select("genre", "dates").rdd.map(row => (row(0), row(1))).flatMapValues(_.toString)
Run Code Online (Sandbox Code Playgroud)

val rdd = df.select("genre", …
Run Code Online (Sandbox Code Playgroud)

scala apache-spark apache-spark-xml

0
推荐指数
1
解决办法
3012
查看次数