Я использую Spark 2.4 и Ignite 2.8 на Windows 10
Когда я помещаю фрейм данных pyspark, чтобы зажечь таблицу, он хорошо сохраняется.
Но, когда я читаю эти данные обратно из Ignite в Фрейм данных Pyspark вернулся в кодировку системы по умолчанию (CP1251). Я не понимаю, как получить правильные данные с правильной кодировкой обратно.
Это пример кода:
import pandas as pd
import pyspark
import os
# Starting local SPARK
os.environ['PYSPARK_SUBMIT_ARGS'] = " --driver-memory 18g --executor-memory 20g --jars ///C:/Ignite/libs/*.jar,///C:/Ignite/libs/optional/ignite-spark-2.4/*.jar,///C:/Ignite/libs/ignite-spring/*.jar,///C:/Ignite/libs/ignite-indexing/*.jar pyspark-shell"
conf = pyspark.SparkConf().setAppName('testIgnite').setMaster('local[2]')
sc = pyspark.SparkContext.getOrCreate(conf=conf)
sqlContext = pyspark.SQLContext(sc)
configFile = "c:/ignite/examples/config/my-data-regions.xml"
# Create test pandas dataframe
ndf=pd.DataFrame([[0,'Тест1'],
[1,'Другой Тест2']
], columns=['c1','c2'])
# Create spark dataframe from pandas df
sdf=sqlContext.createDataFrame(ndf)
sdf.show() #Output 2
# save data to Ignite
sdf.write\
.format("ignite")\
.option("table",'TEST_TABLE_2')\
.option("primaryKeyFields", 'c1')\
.option("config",configFile)\
.mode("overwrite")\
.save()
# load data from Ignite
idf=sqlContext.read.format("ignite")\
.option("table",'TEST_TABLE_2')\
.option("config",configFile)\
.load()
idf.show() #Output 2
#stop Spark
sc.stop()
Этот вывод # 1 - ХОРОШО!
+---+------------+
| c1| c2|
+---+------------+
| 0| Тест1|
| 1|Другой Тест2|
+---+------------+
Этот вывод № 2 - ПЛОХОЙ ЭНКОД: (
+--------------------+---+
| C2| C1|
+--------------------+---+
| Тест1| 0|
|Другой Те...| 1|
+--------------------+---+