リストがpysparkに追加されない理由を理解できません。誰かが自分のコードを見るのを助けることができますか?forループのelse文がリストに追加される場合
import json
input_file = sc.textFile("data.json")
def extract_func(data):
c_list = []
neighborhoods = data.get('neighborhoods', None)
for n in neighborhoods:
if n == []:
c_list.append('Unknown')
else:
c_list.append(n)
return c_list
例のデータ入力:
{'attributes': {'Accepts Credit Cards': True,
'city': 'Edinburgh',
'name': 'Conan Doyle',
'neighborhoods': [],
'stars': 3.5,
'state': 'EDH'}}
この例のエントリは、近傍が示されていないので、私はリストに「不明」追加したいと思います。他のデータエントリには複数の近傍があるので、それらを個別にforループで追加したいとします。
dat = input_file.map(lambda line: json.loads(line))
の後にdat = dat.flatMap(extract_func)
を実行すると、Unknown
付近のエントリが表示されません。
何時間もチェックしているうちに何が間違っているのか分からない、私はここで何が分からないのですか?
:
条件式を使用して:あなたはにコードを簡素化することができますか?何に何が追加されるはずですか?あなたは 'data.get()'を呼び出していますが、データは定義されていません。 「データ」とは何でしょうか?あなたが参照している 'dat'変数は何ですか? – charlesreid1
'n 'がdictに対して反復している場合、値ではなくdictのキーに設定されます。 –
あなたの 'data'' neighborhoods'は' attributes'のサブキーなので、最初から 'neighborhoods'を取得する必要があります。 –