не работает сопоставление столбца ключа redis - PullRequest
0 голосов
/ 11 ноября 2018

Я следую примеру из документации по соединителю spark-redis для создания Dataframes из существующего хэша.

Хеш построен следующим образом:

127.0.0.1: 6379> hset person: 1 имя Джон возраст 30

(целое число) 2

127.0.0.1: 6379> hset person: 2 имя Петр, возраст 45

(целое число) 2

127.0.0.1: 6379> hset person: 3 name Джеймс, возраст 40

Код для чтения хэша выглядит следующим образом -

    SparkSession spark = SparkSession
        .builder()
        .appName("MyApp")
        .master("local[*]")
        .config("spark.redis.host", "localhost")
        .config("spark.redis.port", "6379")
         .getOrCreate();
    Dataset<Row> df = spark.read()
       .format("org.apache.spark.sql.redis")
       .schema(new StructType(new StructField[] {
            DataTypes.createStructField("id", DataTypes.StringType, true),
            DataTypes.createStructField("name", DataTypes.StringType, false),
            DataTypes.createStructField("age", DataTypes.IntegerType, false)
       })
    )
    .option("keys.pattern", "person:*")
    .option("key.column", "id")
    .load();

    df.show();
    df.printSchema();     

Выход

+----+-----+---+
|  id| name|age|
+----+-----+---+
|null| John| 30|
|null|James| 40|
|null|Peter| 45|
+----+-----+---+

root
    |-- id: string (nullable = true)
    |-- name: string (nullable = false)
    |-- age: integer (nullable = false)

Я ожидал 1, 2, 3 соответственно в столбце Id, но вместо этого получил значение null. Любые указатели на этот счет помогут. Также этот код написан на Java, поэтому я не уверен, что существует проблема с типами данных.

1 Ответ

0 голосов
/ 11 ноября 2018

Используемая версия не поддерживает ее - используйте мастер-подсказку, пока не выйдет новая версия.

внешняя ссылка: https://github.com/RedisLabs/spark-redis/issues/114

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