2017-01-30 5 views
0

固定幅のテキストファイルを解析しようとしています。pysparkテキストファイルを解析します

私のテキストファイルは次のようになり、私は行ID、日付、文字列、および整数を必要とする:

00101292017you1234 
00201302017 me5678 

私はsc.textFile(パス)を使用して、RDDにテキストファイルを読み込むことができます。 解析されたRDDとスキーマを使用してcreateDataFrameを作成できます。 これは2つのステップの間の解析です。

答えて

0

スパークのsubstr機能は、固定幅の列を扱うことができ、例えば:

分割さ列を持つ
+---+--------+------+-------+ 
| id| date|string|integer| 
+---+--------+------+-------+ 
|001|01292017| you| 1234| 
|002|01302017| me| 5678| 
+---+--------+------+-------+ 

再フォーマットし、通常のスパークデータフレームのようにそれらを使用することができます。

df = spark.read.text("/tmp/sample.txt") 
df.select(
    df.value.substr(1,3).alias('id'), 
    df.value.substr(4,8).alias('date'), 
    df.value.substr(12,3).alias('string'), 
    df.value.substr(15,4).cast('integer').alias('integer') 
).show() 

はになります。

+0

#df = sqlContext.read.text( "blah.txt")sqlContextを使用する必要がありました。その後、それは働いた。私は文脈について少しは学ぶ必要があると思う。しかし、そうでなければ、あなたは答えました。 –

+0

'spark'はバージョン2.0以上でsparkセッションを表します。 1.6以下のスパークを使用する場合は、 'sqlContext'を使用する必要がありますが、データにアクセスするという点では同じ動作をします – Mariusz

関連する問題