如何在Tableau中使用内存表?

时间:2016-02-27 00:28:53

标签: apache-spark hive apache-spark-sql tableau

我想在Tableau中从Spark SQL访问内存数据。

我阅读本教程并执行以下操作: http://downloads.tableau.com/beta/Tableau%20Spark%20SQL%20Setup%20Instructions.pdf

在VirtualBox上的Linux上:

在主机站点(Windows 8)上:

  • 已下载Tableau,
  • 转发端口(主机上的8124 =来宾上的10001)
  • 安装了Spark ODBC Driver。

之后我成功将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可见表格。
  • 我不知道是什么决定了Tableau可以访问Spark SQL的数据。

如何为Tableau显示此数据?

1 个答案:

答案 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。