要求:编写通过使用spark将数据从sql server加载到tableau数据提取(.tde)而创建的DF 我使用了这个外部jar文件 https://spark-packages.org/package/werneckpaiva/spark-to-tableau 并启动火花壳,如下所示
spark-shell --driver-class-path D:\Spark\jdbc\sqljdbc_6.0\enu\jre7\sqljdbc41.jar --packages werneckpaiva:spark-to-tableau:0.1.0
Shell加载没有错误,我使用下面的代码创建了DF,DF.Show(10)也正常工作
val sqlContext = new org.apache.spark.sql.SQLContext(sc) import TableauDataFrame._
val jdbcSqlConnStr = "jdbc:sqlserver://IP:1433;databaseName=Dbname;user=UserName;password=Password;"
val jdbcDbTable = "dbo.TableName"
val jdbcDF = sqlContext.read.format("jdbc").option("url",jdbcSqlConnStr).option("dbtable",jdbcDbTable).load()
//To check DF
jdbcDF.show(10)
除此之外,现在当我调用命令时,它会低于错误
jdbcDF.write.format("tableau").save("D:\\Spark\\mydata.tde")
error: value TableauDataFrame is not a member of org.apache.spark.sql.DataFrameWriter[org.apache.spark.sql.Row]
从少数阅读开始,我试图隐式导入类,如下所示,这也会引发错误
import TableauDataFrame._
<console>:23: error: not found: value TableauDataFrame
import TableauDataFrame._
someOne可以帮助我找到我想要的东西
答案 0 :(得分:0)
我通过在spark bin文件夹中放置所有必需的罐子(包括werneckpaiva:spark-to-tableau:0.1.0中包含的罐子)并按以下方式调用罐子来解决这个问题
spark-shell --driver-class-path sqljdbc41.jar;spark-to-tableau-0.1.0.jar
然后我可以导入以下所有内容
import tableau.TableauDataFrame._
import tableau.TableauDataFrameImplicity