我正在 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, '\\|')