我是Spark的新手,我正在尝试建立从Spark 1.6.3到Vertica 8.1.1的连接。我使用Vertica提供的以下代码进行查询:
import org.apache.spark.sql.SQLContext
import org.apache.spark.SparkConf
import org.apache.spark.SparkContext
val conf = new SparkConf().setAppName("vertica-spark-connector-testing").setMaster("local[1]")
val sc = new SparkContext(conf)
val sqlContext = new SQLContext(sc)
val host = "x.x.x.x"
val db = "db"
val table = "table"
val user = "user"
val password = "password"
val part = "12";
val opt = Map("host" -> host, "table" -> table, "db" -> db, "numPartitions" -> part, "user" -> user, "password" -> password)
val df = sqlContext.read.format ("com.vertica.spark.datasource.DefaultSource")
.options(opt).load()
val c = df.select("a").filter("a > 5").count
println(c)
sc.stop();
我遇到以下错误
阶> val c = df.select(" a")。filter(" a> 5")。count:42: 错误:值select不是其成员 org.apache.spark.sql.DataFrameReader val c = df.select(" a")。过滤器(" a> 5")。计数
当我尝试显示表格时,它没有返回任何内容
scala> sqlContext.sql("show tables").show()
+---------+-----------+
|tableName|isTemporary|
+---------+-----------+
+---------+-----------+
对于我做错了什么以及对我如何连接的任何帮助的任何想法将不胜感激。 感谢。
答案 0 :(得分:0)
您与Vertica的连接正在运行,否则您将在“show tables”查询中获得例外。
检查分配给codemonkey用户的权限。他们有权访问custDim吗?
检查custDim的结构。它有一个列“a”吗?
注释掉你的val c行并将df.show()放在它上面然后再试一次。这至少会告诉您数据框中包含哪些列。