Biz genellikle aşağıdaki örnekte olduğu gibi manipüle edilmesi gerekiyorsa hangi json dosyalarını okumak
scala> import org.apache.spark.sql.functions.explode
import org.apache.spark.sql.functions.explode
scala> val test = sqlContext.read.json(sc.parallelize(Seq("""{"a":1,"b":[2,3]}""")))
test: org.apache.spark.sql.DataFrame = [a: bigint, b: array<bigint>]
scala> test.printSchema
root
|-- a: long (nullable = true)
|-- b: array (nullable = true)
| |-- element: long (containsNull = true)
scala> val flattened = test.withColumn("b", explode($"b"))
flattened: org.apache.spark.sql.DataFrame = [a: bigint, b: bigint]
scala> flattened.printSchema
root
|-- a: long (nullable = true)
|-- b: long (nullable = true)
scala> flattened.show
+---+---+
| a| b|
+---+---+
| 1| 2|
| 1| 3|
+---+---+
: Sen
explode
işlevini kullanabilirsiniz
teşekkürler, bu kabukta harika çalışıyor. Ancak, bunu Intellij'de denediğimde, b "$" ile b sütununa başvurmaya çalışırken bir hata alıyorum. bunun nasıl çözülebileceğini biliyor musun? –
['import sqlContext.implicits._'] 'ı deneyin (https://github.com/apache/spark/blob/8ecba3e86e53834413da8b4299f5791545cae12e/sql/core/src/main/scala/org/apache/spark/sql/SQLContext.scala # L349). Ayrıca 'org.apache.spark.sql.functions.col' kullanabilir ve 'DataFrame (df ("b",))' üzerinde uygulayabilirsiniz. – zero323