我使用pyspark加载csv作为Dataframe,然后将其保存到cassandra。其中一列在cassandra的模式中被定义为boolean,但我在csv中的实际数据是string t 或者 f . 我能让Cassandra认出来吗 t 以及 f 作为布尔值?否则我必须添加一个数据转换步骤。
t
f
ocebsuys1#
SparkCassandra连接器使用 String.toBoolean 调用将字符串转换为布尔值。但它只接受 true 以及 false ,并在与其他字符串一起使用时引发异常。因此,您需要编写小型数据转换代码,如下所示:
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| +---+-----+
1条答案
按热度按时间ocebsuys1#
SparkCassandra连接器使用
String.toBoolean
调用将字符串转换为布尔值。但它只接受true
以及false
,并在与其他字符串一起使用时引发异常。因此,您需要编写小型数据转换代码,如下所示: