私はpysparkを初めて使い、奇妙な問題に直面しています。私はCSVデータセットをロードしている間、いくつかの列をnull値に設定しようとしています。私は非常に小さなデータセット(test.csv
)と私の場合を再現することができますpyspark:StructField(...、...、False)は、常にnullable = trueを返します。
col1,col2,col3
11,12,13
21,22,23
31,32,33
41,42,43
51,,53
あり、行5、列2でのNULL値があると私は私のDFの内側に、その行を取得する必要はありません。すべてのフィールドをnull不可能なフィールド(nullable=false
)に設定しましたが、私はnullable=true
を持つ3つの列すべてを持つスキーマを取得します。これは、3つの列をすべてnull以外の値に設定しても発生します。 Spark 2.0.1の最新バージョンを使用しています。
+----+----+----+
|col1|col2|col3|
+----+----+----+
| 11| 12| 13|
| 21| 22| 23|
| 31| 32| 33|
| 41| 42| 43|
| 51|null| 53|
+----+----+----+
:
from pyspark.sql import SparkSession
from pyspark.sql.functions import *
from pyspark.sql.types import *
spark = SparkSession \
.builder \
.appName("Python Spark SQL basic example") \
.config("spark.some.config.option", "some-value") \
.getOrCreate()
struct = StructType([ StructField("col1", StringType(), False), \
StructField("col2", StringType(), False), \
StructField("col3", StringType(), False) \
])
df = spark.read.load("test.csv", schema=struct, format="csv", header="true")
df.printSchema()
リターン:
root
|-- col1: string (nullable = true)
|-- col2: string (nullable = true)
|-- col3: string (nullable = true)
とdf.show()
戻ります。ここ
コードです