小编lea*_*ing的帖子

从pyspark中的数据框构建StructType

我是新的spark和python,并且面临从可以应用于我的数据文件的元数据文件构建模式的困难.场景:数据文件的元数据文件(csv格式),包含列及其类型:例如:

id,int,10,"","",id,"","",TRUE,"",0
created_at,timestamp,"","","",created_at,"","",FALSE,"",0
Run Code Online (Sandbox Code Playgroud)

我已成功将其转换为数据框,如下所示:

+--------------------+---------------+
|                name|           type|
+--------------------+---------------+
|                  id|  IntegerType()|
|          created_at|TimestampType()|
|          updated_at|   StringType()|
Run Code Online (Sandbox Code Playgroud)

但是当我尝试使用它将其转换为StructField格式时

fields = schemaLoansNew.map(lambda l:([StructField(l.name, l.type, 'true')]))
Run Code Online (Sandbox Code Playgroud)

要么

schemaList = schemaLoansNew.map(lambda l: ("StructField(" + l.name + "," + l.type + ",true)")).collect()
Run Code Online (Sandbox Code Playgroud)

然后使用将其转换为StructType

schemaFinal = StructType(schemaList)
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/opt/mapr/spark/spark-1.4.1/python/pyspark/sql/types.py", line 372, in __init__
assert all(isinstance(f, DataType) for f in fields), "fields should be a list of DataType"
AssertionError: fields should be a list …
Run Code Online (Sandbox Code Playgroud)

python dataframe apache-spark apache-spark-sql pyspark

12
推荐指数
1
解决办法
4万
查看次数

从包含Pyspark中的时间戳的字符串列中提取日期

我有一个数据框,其日期格式如下:

+----------------------+
|date                  |
+----------------------+
|May 6, 2016 5:59:34 AM|
+----------------------+
Run Code Online (Sandbox Code Playgroud)

我打算以格式从中提取日期YYYY-MM-DD; 所以结果应该是上述日期 - 2016-05-06.

但是当我提取时使用以下内容:

df.withColumn('part_date', from_unixtime(unix_timestamp(df.date, "MMM dd, YYYY hh:mm:ss aa"), "yyyy-MM-dd"))
Run Code Online (Sandbox Code Playgroud)

我得到以下日期

2015-12-27
Run Code Online (Sandbox Code Playgroud)

任何人都可以就此提出建议吗?我不打算将我的df转换为rdd来使用python中的datetime函数,并希望在自己的数据框架中使用它.

datetime apache-spark pyspark pyspark-sql

5
推荐指数
1
解决办法
1万
查看次数