拆分数据时 Spark-SQL 出现问题



我正在 casandra 2.1.12 上测试来自 spark-1.5.1 的一些基本查询。当我尝试按"="(即表中的操作列)拆分数据时遇到此连线问题。它可以正确解析,就像在"|"的情况下一样。它返回单个字符。为什么会这样。

此外,操作列的值未完全显示。那么,如何查看标准输出上列的完整值。

 import org.apache.spark.sql.cassandra.CassandraSQLContext
    import org.apache.spark.sql.cassandra._
    import org.apache.spark.sql
    val csc = new CassandraSQLContext(sc)
    csc.setKeyspace("test")
    val maxDF = csc.sql("select action, split(action, '=')[0], split(action, '=')[1], split(action, '=')[2] from testdata" )
    maxDF.show

拆分 '=' 的输出

    scala> maxDF.show
    +--------------------+------+-----------+---------+
    |              action|   _c1|        _c2|      _c3|
    +--------------------+------+-----------+---------+
    | car=10.288|city=262|   car|10.288|city|      262|
    |kms=0-|year=0-|bu...|   kms|    0-|year|0-|budget|
    |city=40|pc=40|car=10|  city|      40|pc|   40|car|
    |city=40|pc=40|car...|  city|      40|pc|   40|car|
    |city=40|pc=40|car...|  city|      40|pc|   40|car|
    |                pn=1|    pn|          1|     null|
    | city=10|pc=10|car=9|  city|      10|pc|   10|car|
    |city=10|pc=10|car...|  city|      10|pc|   10|car|
    |city=10|pc=10|car...|  city|      10|pc|   10|car|
    |city=10|pc=10|car...|  city|      10|pc|   10|car|
    |city=10|pc=10|car...|  city|      10|pc|   10|car|
    |  city=10|pc=10|pn=1|  city|      10|pc|    10|pn|
    |   year=0-|so=1|sc=0|  year|      0-|so|     1|sc|
    |year=0-|so=1|sc=0...|  year|      0-|so|     1|sc|
    |             year=8-|  year|         8-|     null|
    |budget=6-12|city=...|budget|  6-12|city|    10|pc|
    |budget=6-12|city=...|budget|  6-12|city|    10|pc|
    |budget=6-12|city=...|budget|  6-12|city|    10|pc|
    |budget=6-12|city=...|budget|  6-12|city|    10|pc|
    |car=9.266|city=24...|   car| 9.266|city|   246|pc|
    +--------------------+------+-----------+---------+
    only showing top 20 rows

拆分"|"的输出

val maxDF = csc.sql("select action, split(action, '|')[0], split(action, '|')[1], split(action, '|')[2] from testdata" )
    maxDF.show
    +--------------------+---+---+---+
    |              action|_c1|_c2|_c3|
    +--------------------+---+---+---+
    | car=10.288|city=262|   |  c|  a|
    |kms=0-|year=0-|bu...|   |  k|  m|
    |city=40|pc=40|car=10|   |  c|  i|
    |city=40|pc=40|car...|   |  c|  i|
    |city=40|pc=40|car...|   |  c|  i|
    |                pn=1|   |  p|  n|
    | city=10|pc=10|car=9|   |  c|  i|
    |city=10|pc=10|car...|   |  c|  i|
    |city=10|pc=10|car...|   |  c|  i|
    |city=10|pc=10|car...|   |  c|  i|
    |city=10|pc=10|car...|   |  c|  i|
    |  city=10|pc=10|pn=1|   |  c|  i|
    |   year=0-|so=1|sc=0|   |  y|  e|
    |year=0-|so=1|sc=0...|   |  y|  e|
    |             year=8-|   |  y|  e|
    |budget=6-12|city=...|   |  b|  u|
    |budget=6-12|city=...|   |  b|  u|
    |budget=6-12|city=...|   |  b|  u|
    |budget=6-12|city=...|   |  b|  u|
    |car=9.266|city=24...|   |  c|  a|
    +--------------------+---+---+---+

垂直管道"|"分隔了一系列替代项,在您的情况下没有替代项,因此它只是从该字符本身返回最长的匹配模式,即字符。

使用split(action, '\|')

split(action, '\|')对我来说

仍然有同样的问题。我不得不使用split(action, '\\|')

相关内容

  • 没有找到相关文章

最新更新