проблема при выполнении операций спарка над файлом базы данных, созданным с помощью sqlite - PullRequest
0 голосов
/ 07 января 2019

У меня есть ранее созданный файл базы данных, созданный с помощью sqlite с python api. Я использовал Pyspark 2.2.1 для загрузки, что нормально. Однако при выполнении таких операций, как .filter(), в результате получается пустой фрейм данных. Ниже приведен код, который я пробовал, и я безуспешно использовал два драйвера sqlite (org.xerial:sqlite-jdbc:3.16.1 и sqlite-jdbc-3.8.6.jar):

from pyspark.sql import SparkSession
from pyspark.sql import functions as F


spark = SparkSession.builder \
                    .getOrCreate()

props = {'driver': 'org.sqlite.JDBC', 
            'date_string_format': 'yyyy-MM-dd HH:mm:ss'}
df = spark.read \
          .jdbc("jdbc:sqlite:{}".format(input_db),
                "words", properties=props)

df.show()

## Output:

+-------+----+
|   word| coo|
+-------+----+
|   word| 0,0|
| search| 0,1|
|   word| 0,2|
|   find| 0,3|
|   word| 0,4|
|   seek| 0,5|
|   word| 0,6|
| sleuth| 0,7|
|     or| 0,8|
|mystery| 0,9|
|   word|0,10|
| puzzle|0,11|
|     is|0,12|
|   word|0,13|
|   game|0,14|
|   that|0,15|
|     is|0,16|
|letters|0,17|
|     of|0,18|
|   word|0,19|
+-------+----+
only showing top 20 rows

##
# I tested two methods to retrive rows matching 'word', without success

df.filter(F.col("word") == "word").show()

df.createOrReplaceTempView("DATA")
spark.sql("select * from DATA where word='word'").show()

## Output

+----+---+
|word|coo|
+----+---+
+----+---+

Я думаю, что есть проблема с составом структуры данных, так что спарк не может получить доступ к именам столбцов. Я не могу найти обходной путь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...