Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 正在验证pyspark dataframe中列的数据类型_Python_Apache Spark_Pyspark_Apache Spark Sql - Fatal编程技术网

Python 正在验证pyspark dataframe中列的数据类型

Python 正在验证pyspark dataframe中列的数据类型,python,apache-spark,pyspark,apache-spark-sql,Python,Apache Spark,Pyspark,Apache Spark Sql,我有3列的pyspark数据框。 配置单元表“test1”的DDL都具有字符串数据类型。 因此,如果我使用df.printSchema,则所有数据类型都是字符串数据类型,如下所示 >>> df = spark.sql("select * from default.test1") >>> df.printSchema()

我有3列的pyspark数据框。 配置单元表“test1”的DDL都具有字符串数据类型。 因此,如果我使用df.printSchema,则所有数据类型都是字符串数据类型,如下所示

>>> df = spark.sql("select * from default.test1")
>>> df.printSchema()                                                                                                                                                                     
root                                                                                                                                                                                       
 |-- c1: string (nullable = true)                                                                                                                                            
 |-- c2: string (nullable = true)                                                                                                                                        
 |-- c3: string (nullable = true)  

+----------+--------------+-------------------+                                                                                                                 
|c1        |c2            |c3                 |                                                                                                                 
+----------+--------------+-------------------+                                                                                                                 
|April     |20132014      |4                  |                                                                                                                 
|May       |20132014      |5                  |                                                                                                                 
|June      |abcdefgh      |6                  |                                                                                                                 
+----------+--------------+-------------------+ 
现在我只想筛选“c2”列中整数类型的记录。 所以基本上我只需要前2条记录,它们是整数类型,比如'20132014'。并排除其他记录。

在一行中:

df.withColumn("c2", df["c2"].cast("integer")).na.drop(subset=["c2"])
如果
c2
不是有效的整数,则它将为
NULL
,并在后续步骤中删除

不改变类型

valid = df.where(df["c2"].cast("integer").isNotNull())
invalid = df.where(df["c2"].cast("integer").isNull())