如何在tableau中使用内存表?

igsr9ssn  于 2021-06-26  发布在  Hive
关注(0)|答案(1)|浏览(373)

我想从表中的sparksql访问内存中的数据。
我阅读了本教程并做了以下工作:http://downloads.tableau.com/beta/tableau%20spark%20sql%20setup%20instructions.pdf
在linux上的virtualbox中:
从下载了带有hadoop 2.6的sparksql 1.5.2http://www.apache.org/dyn/closer.lua/spark/spark-1.6.0/spark-1.6.0-bin-hadoop2.6.tgz
运行start-master.sh和start-slaves.sh
运行此命令:
start-thriftserver.sh—主服务器spark://localhost:7077--驱动程序类路径$classpath--hiveconf hive.server2.thrift.bind.host localhost--hiveconf hive.server2.thrift.port 10001
在主机站点(windows 8)上:
下载的画面,
转发端口(主机8124=访客10001)
已安装spark odbc驱动程序。
之后,我成功地将tableau与sparksql连接起来。
现在我想在sparkshell中创建一些表,并使用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服务器,但仍然看不到任何数据。问题是:
我不知道该怎么做才能让“人”的table在桌面上可见。
我不知道,是什么决定了sparksql中的数据可以被tableau访问。
如何使这些数据对tableau可见?

3wabscal

3wabscal1#

您只需使用 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 来自任何客户机的表,可以与正在使用的配置单元元存储进行对话,包括tableau。

相关问题