我想在Tableau中从Spark SQL访问内存数据。
我阅读本教程并执行以下操作: http://downloads.tableau.com/beta/Tableau%20Spark%20SQL%20Setup%20Instructions.pdf
在VirtualBox上的Linux上:
运行此命令:
start-thriftserver.sh --master spark:// localhost:7077 - driver-class-path $ CLASSPATH --hiveconf hive.server2.thrift.bind.host localhost --hiveconf hive.server2.thrift.port 10001
在主机站点(Windows 8)上:
之后我成功将Tableau与SparkSQL连接。
现在我想在spark-shell中创建一些表并使用Tableau访问它们。 我在spark-shell上运行这些命令:
val sqlContext = new org.apache.spark.sql.SQLContext(sc)
import sqlContext.implicits._
case class Person(name: String, age: Int)
val people = sc.textFile("examples/src/main/resources/people.txt").map(_.split(",")).map(p => Person(p(0), p(1).trim.toInt)).toDF()
people.registerTempTable("people")
之后我再次连接到Spark Thrift Server,但仍然没有数据可见。问题是:
如何为Tableau显示此数据?
答案 0 :(得分:0)
您只需使用saveAsTable
或类似内容将表格注册为永久表格。
以下假定使用Spark 2.0,但也与其他版本类似。
val spark = SparkSession.builder.getOrCreate
import spark.implicits._
case class Person(name: String, age: Int)
val people = spark.read
.option("inferSchema", true)
.csv("examples/src/main/resources/people.txt")
.as[Person]
people.write.saveAsTable("people")
saveAsTable
完成后,您应该看到来自任何客户端的people
表,该表可以与正在使用的Hive Metastore对话,包括Tableau。