0
我已經用以下結構存儲在一個JSON格式我的數據存儲在JSON星火值列表的統計特性:獲取
{"generationId":1,"values":[-36.0431,-35.913,...,36.0951]}
我想要得到的間距分佈之間(不同連續數字)在文件平均值(generationIds)之間。
在我zepplein筆記本電腦上的第一行是:
import org.apache.spark.sql.SparkSession
val warehouseLocation = "/user/hive/warehouse"
val spark = SparkSession.builder().appName("test").config("spark.sql.warehouse.dir", warehouseLocation).enableHiveSupport().getOrCreate()
val jsonData = spark.read.json("/user/hive/warehouse/results/*.json")
jsonData.createOrReplaceTempView("results")
我剛纔不過意識到,這不是一個好主意。在上面的JSON數據現在看起來是這樣的:
val gen_1 = spark.sql("SELECT * FROM eig where generationId = 1")
gen_1.show()
+------------+--------------------+
|generationId| values|
+------------+--------------------+
| 1|[-36.0431, -35.91...|
+------------+--------------------+
所有值都在同一領域。
你有什麼想法如何以不同的方式來解決這個問題?它不一定非要是Hive。任何Spark相關的解決方案都可以。
值的數量可以是〜10000,以後。我想將這個分佈和一個已知的函數(模擬vs理論)一起繪製出來。
這很酷,感謝這篇技巧,我已經學到了一些東西。儘管我沒有看到,我怎麼能走得更遠,並得到我想要的分佈,因爲現在間距可以通過採取行[2] - 行[1],行[3] - 行[2]等來提取...,這在SQL中並不方便。 – bayerb
我不是SQL專家,所以我會使用Scala REPL來創建一個函數,該函數需要一個值的集合並返回一個具有相鄰值之間差異的新集合。然後,我會看到如何將該邏輯合併到我在Spark中的DataFrame轉換中。基於我自己的經驗,基本上是一種純粹的程序化方法。 – Vidya
忘記'explode'。雖然在大多數情況下都很有幫助,但我提供了一個更簡單的解決方案。 – Vidya