带有 Vegas 的 Jupyter Notebook(Scala,内核 - Apache Toree),图表不显示数据
Jupyter Notebook (Scala, kernel - Apache Toree) with Vegas, Graph not showing data
我正在使用 Jupyter(内核 - Apache Torre)使用 Apache Spark/Scala 进行分析。
对于可视化,我正在尝试使用 Vegas (github - https://github.com/vegas-viz/Vegas)
当我使用示例 Vegas 代码时 - 不使用 Vegas Spark 扩展,它工作正常
(请参阅随附的屏幕截图)
但是,对于 DataFrames,它似乎没有显示图表。
(即图表未显示数据)
这是代码 -
%AddDeps org.vegas-viz vegas_2.11 0.3.11 --transitive
%AddDeps org.vegas-viz vegas-spark_2.11 0.3.11
import vegas._
import vegas.render.WindowRenderer._
import vegas.data.External._
import vegas.sparkExt._
val seq = Seq(("a", 16), ("b", 77), ("c", 45), ("d",101),("e", 132),("f", 166),("g", 51))
val df = seq.toDF("id", "value")
df.show()
+---+-----+
| id|value|
+---+-----+
| a| 16|
| b| 77|
| c| 45|
| d| 101|
| e| 132|
| f| 166|
| g| 51|
+---+-----+
val usingSparkdf = Vegas("UsingSpark")
.withDataFrame(df1)
.encodeX("id")
.encodeY("value")
.mark(Bar)
usingSparkdf.show
我做错了什么?
这是包含 Scala 扩展的正确方法吗?
%AddDeps org.vegas-viz vegas-spark_2.11 0.3.11
我能够解决这个问题,encodeX、encodeY 应该指定(统计)数字类型,即 Quant、Nom 或 Ord,以及列名。
下面的代码工作正常。
val usingSparkdf = Vegas("UsingSpark")
.withDataFrame(df1)
.encodeX("id", Nom)
.encodeY("value", Quant)
.mark(Bar)
usingSparkdf.show
package al.da.vg
object vegas_spark extends App {
val conf = new SparkConf().setAppName("Vegas_Spark").setMaster("local[*]")
val sc = new SparkContext(conf)
val spark = SparkSession.builder().config(conf).appName("Vegas_Spark").getOrCreate()
val sqlContext = new SQLContext(sc)
import sqlContext.implicits._
spark.sparkContext.setLogLevel("WARN")
val seq1 = Seq(
Map("a" -> "A", "b" -> 28), Map("a" -> "B", "b" -> 55), Map("a" -> "C", "b" -> 43),
Map("a" -> "D", "b" -> 91), Map("a" -> "E", "b" -> 81), Map("a" -> "F", "b" -> 53),
Map("a" -> "G", "b" -> 19), Map("a" -> "H", "b" -> 87), Map("a" -> "I", "b" -> 52))
val df1 = seq1.toDF("a", "b")
df1.show()
val usingSparkdf1 = Vegas("Vegas_Spark")
.withDataFrame(df1)
.encodeX("a", Ordinal)
.encodeY("b", Quantitative)
.mark(Bar)
.show
}
我正在使用 Jupyter(内核 - Apache Torre)使用 Apache Spark/Scala 进行分析。 对于可视化,我正在尝试使用 Vegas (github - https://github.com/vegas-viz/Vegas)
当我使用示例 Vegas 代码时 - 不使用 Vegas Spark 扩展,它工作正常 (请参阅随附的屏幕截图)
但是,对于 DataFrames,它似乎没有显示图表。 (即图表未显示数据)
这是代码 -
%AddDeps org.vegas-viz vegas_2.11 0.3.11 --transitive
%AddDeps org.vegas-viz vegas-spark_2.11 0.3.11
import vegas._
import vegas.render.WindowRenderer._
import vegas.data.External._
import vegas.sparkExt._
val seq = Seq(("a", 16), ("b", 77), ("c", 45), ("d",101),("e", 132),("f", 166),("g", 51))
val df = seq.toDF("id", "value")
df.show()
+---+-----+
| id|value|
+---+-----+
| a| 16|
| b| 77|
| c| 45|
| d| 101|
| e| 132|
| f| 166|
| g| 51|
+---+-----+
val usingSparkdf = Vegas("UsingSpark")
.withDataFrame(df1)
.encodeX("id")
.encodeY("value")
.mark(Bar)
usingSparkdf.show
我做错了什么?
这是包含 Scala 扩展的正确方法吗?
%AddDeps org.vegas-viz vegas-spark_2.11 0.3.11
我能够解决这个问题,encodeX、encodeY 应该指定(统计)数字类型,即 Quant、Nom 或 Ord,以及列名。
下面的代码工作正常。
val usingSparkdf = Vegas("UsingSpark")
.withDataFrame(df1)
.encodeX("id", Nom)
.encodeY("value", Quant)
.mark(Bar)
usingSparkdf.show
package al.da.vg
object vegas_spark extends App {
val conf = new SparkConf().setAppName("Vegas_Spark").setMaster("local[*]")
val sc = new SparkContext(conf)
val spark = SparkSession.builder().config(conf).appName("Vegas_Spark").getOrCreate()
val sqlContext = new SQLContext(sc)
import sqlContext.implicits._
spark.sparkContext.setLogLevel("WARN")
val seq1 = Seq(
Map("a" -> "A", "b" -> 28), Map("a" -> "B", "b" -> 55), Map("a" -> "C", "b" -> 43),
Map("a" -> "D", "b" -> 91), Map("a" -> "E", "b" -> 81), Map("a" -> "F", "b" -> 53),
Map("a" -> "G", "b" -> 19), Map("a" -> "H", "b" -> 87), Map("a" -> "I", "b" -> 52))
val df1 = seq1.toDF("a", "b")
df1.show()
val usingSparkdf1 = Vegas("Vegas_Spark")
.withDataFrame(df1)
.encodeX("a", Ordinal)
.encodeY("b", Quantitative)
.mark(Bar)
.show
}