【发布时间】:2016-03-11 00:23:07
【问题描述】:
我有一个制表符分隔的文件,其中包含以下行
id1 name1 ['a', 'b'] 3.0 2.0 0.0 1.0
即一个id,一个名字,一个带有一些字符串的列表,以及一系列4个float属性。 我正在阅读这个文件作为
rdd = sc.textFile('myfile.tsv') \
.map(lambda row: row.split('\t'))
df = sqlc.createDataFrame(rdd, schema)
我将架构指定为
schema = StructType([
StructField('id', StringType(), True),
StructField('name', StringType(), True),
StructField('list', ArrayType(StringType()), True),
StructField('att1', FloatType(), True),
StructField('att2', FloatType(), True),
StructField('att3', FloatType(), True),
StructField('att4', FloatType(), True)
])
问题是,从 DataFrame 上的 collect 判断,列表和属性都没有被正确读取。事实上,我得到了所有的None:
Row(id=u'id1', brand_name=u'name1', list=None, att1=None, att2=None, att3=None, att4=None)
我做错了什么?
【问题讨论】:
-
绝对确定所有列都是制表符分隔的? (可能看起来像一个愚蠢的问题,但你永远不会知道)。如果有疑问,请执行 hexdump;一个空格的十六进制代码是 20,一个制表符是 09
-
@jDo 绝对确定并检查过
标签: python apache-spark dataframe pyspark