Apache spark 摄取;";及;f";对卡桑德拉来说是布尔型的
我使用pyspark将csv加载为数据帧,然后将其保存到Cassandra。在Cassandra的模式中,其中一列被定义为布尔值,但我在csv中的实际数据是stringApache spark 摄取;";及;f";对卡桑德拉来说是布尔型的,apache-spark,cassandra,boolean,spark-cassandra-connector,Apache Spark,Cassandra,Boolean,Spark Cassandra Connector,我使用pyspark将csv加载为数据帧,然后将其保存到Cassandra。在Cassandra的模式中,其中一列被定义为布尔值,但我在csv中的实际数据是stringt或f。我能让卡桑德拉把t和f识别为布尔值吗?否则,我必须添加一个数据转换步骤。Spark Cassandra Connector将字符串转换为布尔值。但它只接受true和false,如果与其他字符串一起使用,则抛出异常。因此,您需要编写小型数据转换代码,如下所示: scala> val df = Seq((1, "
t
或f
。我能让卡桑德拉把t
和f
识别为布尔值吗?否则,我必须添加一个数据转换步骤。Spark Cassandra Connector将字符串转换为布尔值。但它只接受true
和false
,如果与其他字符串一起使用,则抛出异常。因此,您需要编写小型数据转换代码,如下所示:
scala> val df = Seq((1, "t"), (2, "f"), (3, "t")).toDF("id", "b")
df: org.apache.spark.sql.DataFrame = [id: int, b: string]
scala> val df2 = df.withColumn("b", $"b" === "t")
df2: org.apache.spark.sql.DataFrame = [id: int, b: boolean]
scala> df2.show()
+---+-----+
| id| b|
+---+-----+
| 1| true|
| 2|false|
| 3| true|
+---+-----+