2017-01-30 3 views
0

Пытается разобрать текстовый файл с фиксированной шириной.pyspark разбор текстового файла

моего текстовый файл выглядит следующим образом, и мне нужно идентификатор строки, даты, строка и целое число:

00101292017you1234 
00201302017 me5678 

Я могу прочитать текстовый файл РД, используя sc.textFile (путь) , Я могу создатьDataFrame с разобранным RDD и схемой. Это разбор между этими двумя шагами.

ответ

0

substr функция искры из может обрабатывать фиксированную ширину столбцов, например:

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() 

приведет:

+---+--------+------+-------+ 
| id| date|string|integer| 
+---+--------+------+-------+ 
|001|01292017| you| 1234| 
|002|01302017| me| 5678| 
+---+--------+------+-------+ 

После расщепленных столбцов можно переформатировать и использовать их как в обычной свече dataframe.

+0

# df = sqlContext.read.text ("blah.txt") Мне пришлось использовать sqlContext. Тогда это сработало. Я думаю, мне нужно немного узнать о контексте. Но в остальном вы ответили. –

+0

«Искра» означает искровую сессию в версиях> = 2.0. Если вы используете искру 1.6 или ниже, вам нужно использовать 'sqlContext', но с точки зрения доступа к данным ведет себя довольно одинаково – Mariusz

Смежные вопросы