代码之家  ›  专栏  ›  技术社区  ›  Nivi

RDD Json文件处理

  •  0
  • Nivi  · 技术社区  · 8 年前

    我在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 回复  |  直到 8 年前
        1
  •  1
  •   Willian Fuks    8 年前

    根据我对你问题的理解,这就是你想要的:

    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']
    
        2
  •  1
  •   akuiper    8 年前

    可能会加载 json 模块:

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