我使用以下结构以json格式存储数据:
{"generationId":1,"values":[-36.0431,-35.913,...,36.0951]}
我想得到文件(generationid)上平均值之间的间距分布(连续数字之间的差异)。
我的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理论)来描绘这个分布。
1条答案
按热度按时间0s0u357o1#
这个递归函数并不十分优雅,当然也没有经过战斗测试,它可以计算差异(假设集合大小相等):
给定这样一个函数,您可以将其应用于spark中,如下所示: