将 "t" 和 "f" 作为布尔值摄取到 Cassandra

Ingest "t" and "f" as boolean to Cassandra

我使用 pyspark 加载一个 csv 作为数据帧,然后将其保存到 Cassandra。其中一列在 Cassandra 的架构中被定义为布尔值,但我在 csv 中的实际数据是字符串 tf。我有没有机会让 Cassandra 将 tf 识别为布尔值?否则我必须添加一个数据转换步骤。

Spark Cassandra Connector uses String.toBoolean call 将字符串转换为布尔值。但它只接受 truefalse,如果与其他字符串一起使用会抛出异常。所以你需要写一些小的数据转换代码,像这样:

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|
+---+-----+