拆分数据时 Spark-Sql 出现问题
Issue with Spark-Sql while splitting data
我正在 casandra 2.1.12 上测试来自 spark-1.5.1 的一些基本查询。当我尝试按“=”拆分数据时出现此有线问题,即 table 中的操作列。它正确地解析了'|'的情况。它returns 个性。为什么会这样。
此外,action 列的值未完全显示。那么,如何在 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|
+--------------------+---+---+---+
split(action, '\|')
对我来说仍然有同样的问题。我不得不使用 split(action, '\\|')
竖线“|”将一系列备选方案分开,在您的情况下没有备选方案,因此它只是 returns 来自该字符的最长匹配模式,即字符。
使用split(action, '\|')
我正在 casandra 2.1.12 上测试来自 spark-1.5.1 的一些基本查询。当我尝试按“=”拆分数据时出现此有线问题,即 table 中的操作列。它正确地解析了'|'的情况。它returns 个性。为什么会这样。
此外,action 列的值未完全显示。那么,如何在 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|
+--------------------+---+---+---+
split(action, '\|')
对我来说仍然有同样的问题。我不得不使用 split(action, '\\|')
竖线“|”将一系列备选方案分开,在您的情况下没有备选方案,因此它只是 returns 来自该字符的最长匹配模式,即字符。
使用split(action, '\|')