RDD Json文件处理

时间:2017-11-10 22:12:24

标签: json pyspark google-bigquery rdd

我使用Pyspark上的以下代码从bigquery导入数据:

table_data = sc.newAPIHadoopRDD(
    'com.google.cloud.hadoop.io.bigquery.JsonTextBigQueryInputFormat',
    'org.apache.hadoop.io.LongWritable',
    'com.google.gson.JsonObject',
    conf=conf)

输出是RDD框架,但是具有json格式的数据:

[(0, u'{"colA":"Value1,Value4"}'), (52, u'{"colA":"Value2"}')]

我需要以RDD格式提取所有。产生RDD的一个主要问题不应该包含每条记录的双引号。

必需:

Value1,Value4
Value2

而不是:

"Value1,Value4"
"Value2"

2 个答案:

答案 0 :(得分:1)

可以使用json模块加载它:

import json

table_data.map(lambda t: json.loads(t[1]).get("colA")).collect()
# [u'Value1,Value4', u'Value2']

答案 1 :(得分:1)

根据我从你的问题中所理解的,这就是你在寻找的东西:

import json
data = sc.parallelize([(0, u'{"colA":"Value1,Value4"}'), (52, u'{"colA":"Value2"}')])
data = data.map(lambda x: (json.loads(x[1])['colA']))
print(data.collect())

结果:

['Value1,Value4', 'Value2']