DSE SearchAnalytics с ошибкой Scala - PullRequest
0 голосов
/ 18 мая 2018

При ссылке на эту ссылку я попытался запросить таблицу cassandra в spark Dataframe

val spark = SparkSession
          .builder()
          .appName("CassandraSpark")
          .config("spark.cassandra.connection.host", "127.0.0.1")
          .config("spark.cassandra.connection.port", "9042")
          .master("local[2]")
          .getOrCreate();

Узел, который я использую, - это узел SearchAnalytics.пробовал sql запрос

val ss = spark.sql("select * from killr_video.videos where solr_query = '{\"q\":\"video_id:1\"}'")

Индекс поиска уже включен для этой таблицы.

После запуска программы возникает ошибка, которую я получаю

Exception in thread "main" org.apache.spark.sql.AnalysisException: Table or view not found: `killr_video`.`videos`; line 1 pos 14;

'Project[*] + - 'UnresolvedRelation killr_video. videos

at org.apache.spark.sql.catalyst.analysis.package$AnalysisErrorAt.failAnalysis(package.scala:42)
at org.apache.spark.sql.catalyst.analysis.CheckAnalysis$$anonfun$checkAnalysis$1.apply(CheckAnalysis.scala:82)
at org.apache.spark.sql.catalyst.analysis.CheckAnalysis$$anonfun$checkAnalysis$1.apply(CheckAnalysis.scala:78)
at org.apache.spark.sql.catalyst.trees.TreeNode.foreachUp(TreeNode.scala:127)
at org.apache.spark.sql.catalyst.trees.TreeNode$$anonfun$foreachUp$1.apply(TreeNode.scala:126)
at org.apache.spark.sql.catalyst.trees.TreeNode$$anonfun$foreachUp$1.apply(TreeNode.scala:126)
at scala.collection.immutable.List.foreach(List.scala:392)
at org.apache.spark.sql.catalyst.trees.TreeNode.foreachUp(TreeNode.scala:126)
at org.apache.spark.sql.catalyst.analysis.CheckAnalysis$class.checkAnalysis(CheckAnalysis.scala:78)
at org.apache.spark.sql.catalyst.analysis.Analyzer.checkAnalysis(Analyzer.scala:91)
at org.apache.spark.sql.execution.QueryExecution.assertAnalyzed(QueryExecution.scala:52)
at org.apache.spark.sql.Dataset$.ofRows(Dataset.scala:66)
at org.apache.spark.sql.SparkSession.sql(SparkSession.scala:623)
at org.apache.spark.sql.SQLContext.sql(SQLContext.scala:691)

Как я могу получить данные Cassandra в Spark?

1 Ответ

0 голосов
/ 18 мая 2018

Из этого сообщения об ошибке похоже, что вы запускаете свой код, используя автономную Spark, а не через DSE Analytics (через dse spark-submit или dse spark).

В этом случае вам необходиморегистр таблиц - Документация DSE описывает как это сделать для всех таблиц, используя dse client-tool & spark-sql:

dse client-tool --use-server-config spark sql-schema --all > output.sql
spark-sql --jars byos-5.1.jar -f  output.sql

В моем примере это выглядит следующим образом:

USE test;
CREATE TABLE t122
       USING org.apache.spark.sql.cassandra
       OPTIONS (
                keyspace "test",
                table "t122",
                pushdown "true");

Вот пример solr_query, который просто работает «из коробки», если я запускаю его в спарк-оболочке, запущенной с dse spark:

scala> val ss = spark.sql("select * from test.t122 where solr_query='{\"q\":\"t:t2\"}'").show
+---+----------+---+
| id|solr_query|  t|
+---+----------+---+
|  2|      null| t2|
+---+----------+---+

Чтобы сделать вашу жизнь проще,лучше использовать DSE Analytics, а не приносить собственную искру .

...