2017-02-23 3 views
0
narcoticsCrimeTuples = narcoticsCrimes.map(lambda x:(x.split(",")[0], x)) 

私はCSVを持っています。コンマで区切って解析しようとしています。各文字列の最初のエントリが主キーです。
narcoticsCrimeTuples.first()[1]この匿名の分割機能は何をしますか?

私の現在の理解呼び出すときに、私は値とは別のライン上のキーを取得したい(または単に分離)ですが、各分割[0]の最初の部分を取り、コンマによって分けx」があり、そしてそれを新しいx 'として返しますが、[]内の数字は何でもかまいませんし、同じ結果を返すので、中間部分が正しくないと確信しています。

+0

この式 'narcoticsCrimes.map(ラムダX:(x.split( "")[0]、X))'無効である

は、ここで例を参照してください。この 'map(function、"カンマ、区切られた ".split("、 "))'のようなことをすることができます - しかしあなたの質問はそれを述べていません。 –

+0

'narcoticsCrimes'はカスタムオブジェクトですか?独自の 'map'メソッドが定義されていますか? –

+0

@JordanBonitatis PySpark。それはRDDです –

答えて

1

あなたの変数は、「narcoticsCrimeTuples」という名前なので、あなたは「タプル」を取得することが期待されているように見えるされています。タプルの

あなたの二つの値は、CSV x.split(",")[0]ライン全体xの最初の列です。

私はあなたがすることを望む理由

本当にはっきりしていない別の行にキーを取得したいと思います...

(または単に個別の)値からの呼び出しnarcoticsCrimeTuples .first()[1]

.first()を呼び出すと、タプル全体が取得されます。 [0]が最初の列で、[1]がCSVの対応する行になり、これには[0]の値も含まれます。


はあなたnarcoticsCrimes.flatMap(lambda x: x.split(","))場合、すべての値が分離されます。あなたがPySparkにいるような構文から判断

例えば、単語のカウント例...

textFile.flatMap(lambda line: line.split()).map(lambda word: (word, 1)) 
+0

あなたの答えとアミールの助け!私は使用を終了しました narcoticsCrimeTuples = narcoticsCrimes.map(ラムダx:(x.split( "、")[1:]、x) narcoticsCrimeTuples.first( –

+0

)無意味なようです。あなたはまだCSVデータのすべての行を持っています –

+0

oops意味narcoticsCrimeTuples = narcoticsCrimes.map(ラムダx:(x.split( "、")[1:]))それはより良いですか? –

0

らしいです。それが本当であれば、あなたのRDDをマッピングしていて、行ごとに(key, row)タプルを作成します。このキーはコンマで区切られた項目のリストの最初の要素です。 narcoticsCrimeTuples.first()を実行すると、最初のレコードが表示されます。

https://gist.github.com/amirziai/5db698ea613c6857d72e9ce6189c1193
関連する問題