2017-01-18 2 views
1

Данные выглядит следующим образом:Как прочитать файл в pyspark с «] | [» Разделитель

pageId]|[page]|[Position]|[sysId]|[carId 0005]|[bmw]|[south]|[AD6]|[OP4

Есть по крайней мере 50 столбцов и миллионы строк.

Я пытаюсь использовать приведенный ниже код для чтения:

dff = sqlContext.read.format("com.databricks.spark.csv").option("header", "true").option("inferSchema", "true").option("delimiter", "]|[").load(trainingdata+"part-00000")

это дает мне следующую ошибку:

IllegalArgumentException: u'Delimiter cannot be more than one character: ]|['

ответ

0

Try с управляющей последовательностью

dff = (sqlContext.read 
       .format("com.databricks.spark.csv") 
       .option("delimiter", "\\]\\|\\[") 
       .load(trainingdata+"part-00000") 
+0

u'Поддерживаемый специальный символ для разделителя: \\] \\ | \\ [' – dsl1990

2

вам может использовать более одного символа Acter для разделителей в РДУ

вы можете попробовать этот код

from pyspark import SparkConf, SparkContext 
from pyspark.sql import SQLContext 

conf = SparkConf().setMaster("local").setAppName("test") 
sc = SparkContext(conf = conf) 

input = sc.textFile("yourdata.csv").map(lambda x: x.split(']|[')) 

print input.collect() 

вы можете превратить RDD в DataFrame (если вы хотите), используя toDF() функцию, и не забудьте указать схему, если вы хотите сделайте это

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