2016-02-27 22 views
1

我想從Tableau中的Spark SQL訪問內存中的數據。如何使用Tableau中的內存表?

我閱讀本教程,做了以下內容: 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

  • 下載SparkSQL 1.5.2使用Hadoop 2.6
  • 運行start-master.sh和start-slaves.sh
  • 運行此命令:

    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中):(在主機上的來賓= 10001 8124)

  • 安裝星火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") 
    

    後,我連接到星火節儉服務器再次但仍沒有數據也清晰可見。問題是:

    • 我不知道該如何操作才能使Tableau的「人員」表可見。
    • 我不知道,什麼決定了Tableau可以訪問Spark SQL中的數據。

    如何使這些數據在Tableau中可見?

  • +0

    我應該使用HiveThriftServer2.startWithContext(sqlContext.asInsanceOf [HiveContext])嗎?如何設置HiveContext的主機和端口? –

    +0

    使用'SQLContext.setConf'方法? – zero323

    回答

    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表從任何客戶端,可以在使用中交談的蜂巢metastore,畫面包括。

    +1

    嗨Jacek。從磁盤而不是內存中讀取表格顯然會變慢。確實無法從Tableau讀取臨時表? –