私はスパーク(時間)のために新しく、さらにScalaでは経験の浅いです。しかし、私は両方のことにもっと慣れ親しんでくれることを切望してきました。スパーク結合アレイ
私はかなり軽いタクを持っています。私は2つのJSONファイルからインポートする2つのデータフレームを持っています。 1つはuuid,text,tag_ids
と、もう1つはタグid,term
です。uuid、text、tag_ids、tag_termsを含むsolr
にインポートできる新しいjsonファイルを作成したいと思います。
val text = spark.sqlContext.jsonFile("/tmp/text.js")
val tags = spark.sqlContext.jsonFile("/tmp/tags.js")
text.printSchema()
root
| -- uuid: string (nullable = true)
| -- tag_ids: array (nullable = true)
| | -- element: string (contiansNull = true)
| -- text: string (nullable = true)
tags.printSchema()
root
| -- id: string (nullable = true)
| -- term: string (nullable = true)
#desired output
+--------------------+------+---------+------------+
| uuid| text | tag_ids | tag_terms|
+--------------------+------+---------+------------+
|cf5c1f4c-96e6-4ca...| foo | [1,2]| [tag1,tag2]|
|c9834e2e-0f04-486...| bar | [2,3]| [tag2,tag3]|
+--------------------+--------------+--------------+
私が試したことをすべて示すのは難しいです。本質的に.join()
は配列であるtag_idsに問題があります。私はexplode()
tag_ids
に参加してtag_terms
に参加することができますが、それを新しいdfに再組み立てしてもまだ私のレベルを超えています。 explode
を使用して
おかげでこれが働いていました。私の実際のデータには、さらにいくつかの列があり、いくつかの行にはnull値が入っていたか、実際のtag_idはありませんでした。これは、左の結合で簡単に解決されました。 – matchew