小编Pra*_*nan的帖子

保存 pyspark 数据帧后列的可为空性不正确

当保存带有添加了“withColumn”函数的新列的 pyspark 数据帧时,可空性从 false 更改为 true。

版本信息:Python 3.7.3/Spark2.4.0-cdh6.1.1

>>> l = [('Alice', 1)]
>>> df = spark.createDataFrame(l)
>>> df.printSchema()
root
 |-- _1: string (nullable = true)
 |-- _2: long (nullable = true)

>>> from pyspark.sql.functions import lit
>>> df = df.withColumn('newCol', lit('newVal'))
>>> df.printSchema()
root
 |-- _1: string (nullable = true)
 |-- _2: long (nullable = true)
 |-- newCol: string (nullable = false)

>>> df.write.saveAsTable('default.withcolTest', mode='overwrite')

>>> spark.sql("select * from default.withcolTest").printSchema()
root
 |-- _1: string (nullable = true)
 |-- _2: …
Run Code Online (Sandbox Code Playgroud)

nullable apache-spark apache-spark-sql pyspark

7
推荐指数
0
解决办法
266
查看次数

检查 Pyspark Dataframe 中的重复项

有没有一种简单有效的方法来检查 python 数据框是否基于列的重复项(而不是删除它们)?

我想检查一个数据框是否具有基于列组合的重复项,如果是,则该过程失败。

TIA。

dataframe python-2.7 pyspark spark-dataframe

6
推荐指数
3
解决办法
2万
查看次数

pyspark date_format 函数返回错误的年份

pyspark.sql.functions.date_format - 返回一年中最后一天的错误年份

Pyspark版本:版本2.3.0.cloudera3 Python版本:Python 2.7.5

当我尝试使用 pyspark 中的函数 date_format 重新格式化一年中的最后一个日期时,当与“YYYY”而不是“yyyy”一起使用时,它会返回下一年。

>>> from pyspark.sql.functions import *

>>> dftest = spark.createDataFrame([('2017-12-31',)], ['dt'])

>>> dftest.select(date_format('dt', 'MM/dd/yyy').alias('date')).collect()
[Row(date=u'12/31/2017')]
>>> dftest.select(date_format('dt', 'MM/dd/yyyy').alias('date')).collect()
[Row(date=u'12/31/2017')]

>>> dftest.select(date_format('dt', 'MM/dd/YYY').alias('date')).collect()
[Row(date=u'12/31/2018')]
>>> dftest.select(date_format('dt', 'MM/dd/YYYY').alias('date')).collect()
[Row(date=u'12/31/2018')]
Run Code Online (Sandbox Code Playgroud)

“YYYY”(大写)与“yyyy”(小写)有何不同?

python date-format pyspark

2
推荐指数
1
解决办法
1684
查看次数