将“t”和“f”作为布尔值接受给cassandra

nkoocmlb  于 2021-05-24  发布在  Spark
关注(0)|答案(1)|浏览(409)

我使用pyspark加载csv作为Dataframe,然后将其保存到cassandra。其中一列在cassandra的模式中被定义为boolean,但我在csv中的实际数据是string t 或者 f . 我能让Cassandra认出来吗 t 以及 f 作为布尔值?否则我必须添加一个数据转换步骤。

ocebsuys

ocebsuys1#

SparkCassandra连接器使用 String.toBoolean 调用将字符串转换为布尔值。但它只接受 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|
+---+-----+

相关问题