【发布时间】:2020-07-24 04:11:19
【问题描述】:
我将以下数据作为 .txt 文件以制表符分隔格式存储在我的 blob 存储中。我正在使用 pyspark.sql 将数据作为 pyspark.sql.df 加载到数据块中。
这是数据的形状。
df = spark.createDataFrame(
[
(302, 'foo'), # values
(203, 'bar'),
(202, 'foo'),
(202, 'bar'),
(172, 'xxx'),
(172, 'yyy'),
],
['LU', 'Input'] # column labels
)
display(df)
首先我在加载之前为数据创建了一个模式:
from pyspark.sql.types import *
data_schema = [
StructField('LU', StringType(), True),
StructField('Input', StringType(), True)]
mySchema = StructType(fields=data_schema)
然后我使用以下代码读入数据:
df = spark.read.csv("/filepath/filename.txt", schema=mySchema , header=True)
df.show()
但是,当我查看数据时,第一列看起来不错,但第二列的值显示为空。
+----------+-----+
| LU|Input|
+----------+-----+
|302 | null|
|203 | null|
|202 | null|
|202 | null|
|172 | null|
|172 | null|
+----------+-----+
有谁知道为什么“输入”变量显示为空?这只是虚拟数据,当使用具有 30 多个变量的真实数据时,只会加载第一个变量值,其他所有值都为空。
谢谢
【问题讨论】:
-
您可以从文件中添加示例记录吗?
-
@Shu 我不明白你的意思?
-
从
/filepath/filename.txt文件中添加一些示例数据.. -
@Shu 我不认为你可以添加一个数据文件到堆栈溢出?你是怎么做到的?
-
@Mrmoleje:试试:
df = spark.read.csv("/filepath/filename.txt", schema=mySchema , header=True, sep='\t')。您可以将一些行作为纯文本添加到您的问题中。
标签: pyspark pyspark-sql