У меня есть ранее созданный файл базы данных, созданный с помощью 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|
+----+---+
+----+---+
Я думаю, что есть проблема с составом структуры данных, так что спарк не может получить доступ к именам столбцов. Я не могу найти обходной путь.