如何使用 PySpark 读取以下 JSON 结构以激发数据帧?
我的 JSON 结构
{"results":[{"a":1,"b":2,"c":"name"},{"a":2,"b":5,"c":"foo"}]}
我试过:
df = spark.read.json('simple.json');
我希望输出 a、b、c 作为列,值作为相应的行。
谢谢。
原文由 Karthik Mannava 发布,翻译遵循 CC BY-SA 4.0 许可协议
如何使用 PySpark 读取以下 JSON 结构以激发数据帧?
我的 JSON 结构
{"results":[{"a":1,"b":2,"c":"name"},{"a":2,"b":5,"c":"foo"}]}
我试过:
df = spark.read.json('simple.json');
我希望输出 a、b、c 作为列,值作为相应的行。
谢谢。
原文由 Karthik Mannava 发布,翻译遵循 CC BY-SA 4.0 许可协议
from pyspark.sql import SparkSession
from pyspark.sql.functions import col
from pyspark.sql.functions import explode
spark = SparkSession.builder.getOrCreate()
sc = spark.sparkContext
json_data = '{"results":[{"a":1,"b":2,"c":"name"},{"a":2,"b":5,"c":"foo"}]}'
json_rdd = sc.parallelize([json_data])
df = spark.read.json(json_rdd)
df =df.withColumn("results", explode(df.results)).select(
col("results.a").alias("a"),
col("results.b").alias("b"),
col("results.c").alias("c") )
df.show()
原文由 Kaustuv 发布,翻译遵循 CC BY-SA 4.0 许可协议
2 回答5.1k 阅读✓ 已解决
2 回答1.1k 阅读✓ 已解决
4 回答993 阅读✓ 已解决
3 回答1.1k 阅读✓ 已解决
3 回答1.2k 阅读✓ 已解决
1 回答1.7k 阅读✓ 已解决
1 回答1.2k 阅读✓ 已解决
Json 字符串变量
如果你有 json 字符串作为变量, 那么你可以这样做
这会给你
Json 字符串作为文件中的单独行(sparkContext 和 sqlContext)
如果你 在文件中有 json 字符串作为单独的行, 那么你可以 使用 sparkContext 读取它到 rdd[string] 如上所述,其余过程与上面相同
Json 字符串作为文件中的单独行(仅限 sqlContext)
如果您将 json 字符串作为文件中的单独行, 那么您只能使用
sqlContext
。但是这个过程很复杂,因为 你必须为它创建模式这应该给你与上面相同的结果
我希望这个答案有帮助