我正在测试casandra 2.1.12上spark-1.5.1的一些基本查询。当我尝试通过' ='分割数据时出现此有线问题即表中的行动栏。它正确地解析了' |'的情况。它返回单个字符。为什么会如此。
此外,动作栏的值未完全显示。那么,如何在stdout上查看列的完整值。
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|
+--------------------+---+---+---+
答案 0 :(得分:2)
垂直管道“|”将一系列替代品分开,在你的情况下没有替代品,所以它只返回该角色所拥有的最长匹配模式,即角色。
使用split(action, '\\|')
答案 1 :(得分:1)
split(action, '\\|')
对我来说仍然存在同样的问题。我不得不使用split(action, '\\\\|')