2016-09-08 49 views
1

JSON格式是這樣的:PySpark - 如何輸出特定字段的JSON?

{ 
    "name": "aaa", 
    "address": { 
    "street": "blv abc", 
    "street_num": "122" 
    } 
} 

我會讀從地板文件中的數據並對其執行一個SQL查詢,比如尋找所有住在街道blv abc那些。但我只是想輸出nameaddress.street爲:

{ 
    "name": "aaa", 
    "address": { 
    "street": "blv abc" 
    } 
} 

我怎麼能只輸出nameaddress.street

DataFrameReader模式可能不適用於我,因爲我需要在輸出之前執行一些SQL查詢,可能需要在street_num上進行過濾。

+1

你到底想幹什麼?將JSON轉換爲不帶street_num的新JSON?你能否提供你的代碼,顯示你想要做什麼? – Yaron

+0

'record = sqlContext.read.parquet(「file.json」)' 'sqlContext.registerDataFrameAsTable(record,「record」)' 'sqlContext.sql(「select * from record where street =='blv abc'」 )' – ryan

回答

1

我對這種不尋常的數據轉換的最後一招是

from pyspark.sql.types import Row 

def transform(row): 
    d = row.asDict() # now in python data types 

    del d['address']['street_num'] 

    return Row(**d) 

new = dataframe.rdd.map(transform) 

要刪除許多領域保持苗條記錄的,我想,否則它並沒有真正值得。

+0

是的。我有一個很大的JSON,只是想過濾後輸出幾個字段。謝謝! – ryan

相關問題