Невозможно создать таблицу на Apache Spark ThriftServer через Spark Java API

У меня есть простая Java-программа Spark API, описанная следующим образом:

SparkSession spark = SparkSession
            .builder()
            .appName("spark")
            .master("local")
            .getOrCreate();

ArrayList<TagClass> tagClass = new ArrayList<>();
TagClass tagClass1 = new TagClass();
tagClass1.setId(13);
tagClass.add(tagClass1);
Dataset<Row> rowDataset = spark.createDataFrame(tagClass,TagClass.class);

rowDataset.createOrReplaceTempView("TestTable");

rowDataset.write().option("createTableColumnTypes", "id INTEGER")
    .format("jdbc")
        .option("url", "jdbc:hive2://192.***.***.1:10000")
        .option("dbtable", "TestTable")
        .save();

эта программа пытается вставить некоторые данные в таблицу Apache Spark ThriftServer (куст).

Когда я запускаю его на IntelliJ, я получаю следующее:

Exception in thread "main" java.sql.SQLException: org.apache.spark.sql.catalyst.parser.ParseException:
no viable alternative at input 'CREATE TABLE TestTable ("id"'(line 1, pos 27) 
== SQL ==
CREATE TABLE TabelaTeste2 ("id" int )
---------------------------^^^

Проверка экземпляра thriftserver, который работает на моем компьютере с windows10 (на cmd с правами суперпользователя (admin)), показывает мне эту ошибку:

ERROR SparkExecuteStatementOperation: Error executing query, currentState RUNNING,
org.apache.spark.sql.AnalysisException: Table or view not found: TestTable;

сопровождается той же ошибкой, которая была отображена на IntelliJ.

Билайн подключается просто отлично. На Beeline я могу выбирать, вставлять и создавать таблицы на том же экземпляре Thrift-сервера, с которым я пытаюсь работать с моим Java-кодом.

Тестирование кода SQL, предоставленного сообщением об ошибке в Beeline (CREATE TABLE TestTable ("id" int)), также приводит к той же ошибке, которая была показана обоими (IntelliJ и ThriftServer), но удаляя кавычки ("") из SQL (CREATE TABLE TestTable (id int)) на билайн работает просто отлично.

Я не знаю, как задать поведение "без кавычек" в SQL, который генерируется искрами, и я не думаю, что это проблема, поскольку этот код SQL создается, я предполагаю,.format("jdbc") вариант.

ЗАВОРАЧИВАТЬ:

-> Я пытаюсь создать таблицу на своем искровом трифсервере программно, а не делать это с помощью beeline, и я получаю вышеупомянутые ошибки.

Итак, почему я получаю эти ошибки, что я делаю не так?

Мой POM выглядит следующим образом:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"


     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>spark-cassandra</groupId>
<artifactId>Sparkssandra</artifactId>
<version>1.0-SNAPSHOT</version>
<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
            </configuration>
        </plugin>
    </plugins>
</build>

<dependencies>
    <dependency>
        <groupId>org.apache.spark</groupId>
        <artifactId>spark-core_2.11</artifactId>
        <version>2.2.0</version>
    </dependency>

    <!-- https://mvnrepository.com/artifact/org.apache.spark/spark-sql -->
    <dependency>
        <groupId>org.apache.spark</groupId>
        <artifactId>spark-sql_2.11</artifactId>
        <version>2.2.0</version>
    </dependency>

    <!-- https://mvnrepository.com/artifact/org.apache.spark/spark-hive-thriftserver -->
    <dependency>
        <groupId>org.apache.spark</groupId>
        <artifactId>spark-hive-thriftserver_2.11</artifactId>
        <version>2.2.0</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/org.apache.hive/hive-jdbc -->
    <dependency>
        <groupId>org.apache.hive</groupId>
        <artifactId>hive-jdbc</artifactId>
        <version>2.2.0</version>
    </dependency>

    <!-- https://mvnrepository.com/artifact/com.datastax.spark/spark-cassandra-connector -->
    <dependency>
        <groupId>com.datastax.spark</groupId>
        <artifactId>spark-cassandra-connector_2.11</artifactId>
        <version>2.0.7</version>
    </dependency>

Заранее спасибо!

РЕДАКТИРОВАТЬ:

Я удалил кавычки из выражения SQL, сгенерированного mettod createTable класса JdbcUtils $, и таблица была успешно создана, но на ней не было сохранено никаких данных, вместо этого это сообщение об ошибке появляется на IntelliJ:

ERROR Executor: Exception in task 0.0 in stage 0.0 (TID 0)
java.sql.SQLException: Method not supported

Есть какие-нибудь подсказки?

0 ответов

Другие вопросы по тегам