如何在 Tableau 中使用内存中表



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

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

在 Linux 上的 VirtualBox 中:

  • 从 http://www.apache.org/dyn/closer.lua/spark/spark-1.6.0/spark-1.6.0-bin-hadoop2.6.tgz 下载了带有Hadoop 2.6的SparkSQL 1.5.2
  • 运行 start-master.sh 和 start-slaves.sh
  • 运行以下命令:

    start-thriftserver.sh --大师 spark://localhost:7077 --driver-class-path $CLASSPATH --hiveconf hive.server2.thrift.bind.host localhost --hiveconf hive.server2.thrift.port 10001

在主机站点 (Windows 8) 上:

  • 下载的 Tableau,
  • 转发端口(主机上的 8124 = 客户机上的 10001)
  • 安装了 Spark ODBC 驱动程序。

之后,我成功地将 Tableau 与 SparkSQL 连接起来。

现在,我想在 Spark-shell 中创建一些表,并使用 Tableau 访问它们。我在火花外壳上运行以下命令:

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 可见?

您只需

使用 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完成后,您应该会看到来自任何可以与正在使用的 Hive 元存储(包括 Tableau)通信的客户端people表。

相关内容

  • 没有找到相关文章

最新更新