Я создал проект Maven, как pom.xml
Spark: Не в состоянии считывать данные из улья таблиц
<spark.version>1.3.0</spark.version>
<dependencies>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-core_2.11</artifactId>
<version>${spark.version}</version>
<exclusions>
<exclusion>
<groupId>org.scala-lang</groupId>
<artifactId>scala-library</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-sql_2.11</artifactId>
<version>${spark.version}</version>
</dependency>
<!-- <dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.6</version>
</dependency> -->
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-hive_2.11</artifactId>
<version>${spark.version}</version>
</dependency>
</dependencies>
Мой класс, который считывает данные из улья таблицы:
import org.apache.spark.sql.SQLContext
import org.apache.spark.SparkConf
import org.apache.spark.SparkContext
import org.apache.spark.sql.hive.HiveContext
import org.apache.spark.sql.DataFrame
class SparkHive {
def createTable = {
val conf = new SparkConf().setMaster("local").setAppName("My First spark app")
val sparkCtxt = new SparkContext(conf)
val hiveContext = new HiveContext(sparkCtxt)
hiveContext.setConf("hive.metastore.uris", "thrift://127.0.0.1:9083")
val table = hiveContext.sql("select * from test")
table.show()
val gpData = table.groupBy("col1")
println(gpData.max("col2").show())
}
}
Я использую искру читать данные из таблицы, присутствующей в метафоре улья, но сталкиваются с очень странными проблемами.
У меня есть два вопроса, как описано ниже:
Вопрос 1. Если я использую <spark.version>1.3.0</spark.version>
искра может найти улей таблицу и может печатать данные на консоль с помощью этой линии
val table = hiveContext.sql("select * from test")
table.show()
, но если я фильтр или группу, как показано в примере искры не может найти col1
и бросает исключение, как показано ниже
Exception in thread "main" java.util.NoSuchElementException: key not found: col1#0
поэтому вопрос в том, что если кадр данных может найти эту таблицу, то почему он не позволяет мне делать группировку по столбцам и как решить эту проблему?
Вопрос 2. Если я использую <spark.version>1.6.0</spark.version>
, тогда искра не может даже найти таблицу, присутствующую в метафоре улья, так почему же такое поведение ???
СРЕДА: Cloudera QUICKSTART VM 5.8.0
Я не хочу использовать sql здесь. Хотите использовать функцию scala здесь – saching