Spark-Sql 中字符串的转义字符
Escape character for a String in Spark-Sql
在发布这个问题之前,我阅读了 2 小时的 spark 文档。
我有一个 Spark 数据框。其中有 9 列。我想过滤 3 列(A、B、C)上的数据,其中包含 String - "None"。我尝试使用过滤器选项来做。它适用于单个列,但不适用于列组。
val cleanedDF = joinedDF
.filter(joinedDF("A") !== ("None")
.joinedDF("B") !== ("None")
.joinedDF("C") !== ("None"))
这适用于单个列,但我怎样才能为一组列提供一些东西呢?即仅在所有列中都包含 "None" 时才过滤掉列,如下所示。可能吗?
val cleanedDF = joinedDF.filter(
joinedDF("A") !== ("None") and
joinedDF("B") !== ("None") and
joinedDF("C") !== ("None"))
我还尝试过转换为 SQL 模板并对其进行查询。但是由于我的过滤器选项是一个字符串,所以我不能在 where 子句中使用它。有人还可以告诉我 spark-sql
中正确的转义字符是什么吗?
示例:
joinedDF.registerTempTable("df")
sqlContext.sql("SELECT * FROM df where B = `None` " ).show()
感谢任何建议或帮助!
谢谢
使用 DataFrame API:
val df = sc.parallelize(Seq(
("None", "a", "b"), ("c", "None", "d"), ("e", "f", "None"), ("g", "h", "i")
)).toDF("A", "B", "C")
df.where(($"A" !== "None") && ($"B" !== "None") && ($"C" !== "None")).show
// +---+---+---+
// | A| B| C|
// +---+---+---+
// | g| h| i|
// +---+---+---+
与 SQL:
df.registerTempTable("df")
val query = """SELECT * FROM df
WHERE A != "None" AND B != "None" AND C != "None""""
sqlContext.sql(query).show
// +---+---+---+
// | A| B| C|
// +---+---+---+
// | g| h| i|
// +---+---+---+
在发布这个问题之前,我阅读了 2 小时的 spark 文档。
我有一个 Spark 数据框。其中有 9 列。我想过滤 3 列(A、B、C)上的数据,其中包含 String - "None"。我尝试使用过滤器选项来做。它适用于单个列,但不适用于列组。
val cleanedDF = joinedDF
.filter(joinedDF("A") !== ("None")
.joinedDF("B") !== ("None")
.joinedDF("C") !== ("None"))
这适用于单个列,但我怎样才能为一组列提供一些东西呢?即仅在所有列中都包含 "None" 时才过滤掉列,如下所示。可能吗?
val cleanedDF = joinedDF.filter(
joinedDF("A") !== ("None") and
joinedDF("B") !== ("None") and
joinedDF("C") !== ("None"))
我还尝试过转换为 SQL 模板并对其进行查询。但是由于我的过滤器选项是一个字符串,所以我不能在 where 子句中使用它。有人还可以告诉我 spark-sql
中正确的转义字符是什么吗?
示例:
joinedDF.registerTempTable("df")
sqlContext.sql("SELECT * FROM df where B = `None` " ).show()
感谢任何建议或帮助!
谢谢
使用 DataFrame API:
val df = sc.parallelize(Seq(
("None", "a", "b"), ("c", "None", "d"), ("e", "f", "None"), ("g", "h", "i")
)).toDF("A", "B", "C")
df.where(($"A" !== "None") && ($"B" !== "None") && ($"C" !== "None")).show
// +---+---+---+
// | A| B| C|
// +---+---+---+
// | g| h| i|
// +---+---+---+
与 SQL:
df.registerTempTable("df")
val query = """SELECT * FROM df
WHERE A != "None" AND B != "None" AND C != "None""""
sqlContext.sql(query).show
// +---+---+---+
// | A| B| C|
// +---+---+---+
// | g| h| i|
// +---+---+---+