при запросе к той же таблице spark sql возвращает нулевые значения, но hive и impaly получают нормальные данные? - PullRequest
0 голосов
/ 09 января 2019

У меня есть стол в улье

enter image description here

Запрос к одной и той же таблице двумя способами:

  1. улей или импала: я получаю такие ожидаемые результаты
0: jdbc:hive2://cdh-master3:10000/> SELECT * FROM kafka_table.risk_order_user_level_info rouli WHERE rouli.month = '2019_01' AND rouli.day = '08' androuli.order_id >0 limit 5;
INFO  : OK
+-----------------+-------------------+------------+--------------+---------------+-------------------+-----------------------+---------------+---------------------+----------------------+-------------------+--------------+------------+--+
| rouli.order_id  | rouli.order_type  | rouli.uid  | rouli.po_id  | rouli.status  | rouli.user_level  | rouli.pre_user_level  | rouli.credit  | rouli.down_payment  | rouli.open_order_id  | rouli.createtime  | rouli.month  | rouli.day  |
+-----------------+-------------------+------------+--------------+---------------+-------------------+-----------------------+---------------+---------------------+----------------------+-------------------+--------------+------------+--+
| 39180235        | 2                 | 10526665   | -999         | 100           | 10                | 106                   | 27000         | 0              | -999                 | 1546887803138     | 2019_01      | 08         |
| 39180235        | 2                 | 10526665   | -999         | 100           | 10                | 106                   | 27000         | 0              | -999                 | 1546887805302     | 2019_01      | 08         |
| 39180235        | 2                 | 10526665   | -999         | 100           | 10                | 106                   | 27000         | 0              | -999                 | 1546887807457     | 2019_01      | 08         |
| 39180235        | 2                 | 10526665   | -999         | 100           | 10                | 106                   | 27000         | 0              | -999                 | 1546887809610     | 2019_01      | 08         |
| 39804907        | 2                 | 15022908   | -999         | 100           | -999              | -999                  | 0             | 85000              | -999                 | 1546887807461     | 2019_01      | 08         |
+-----------------+-------------------+------------+--------------+---------------+-------------------+-----------------------+---------------+---------------------+----------------------+-------------------+--------------+------------+--+
  1. но usr spark whate python или scala, я понял, несколько столбцов равны нулю
scala> spark.sql("SELECT * FROM kafka_table.risk_order_user_level_info WHERE month = '2019_01' AND day = '08'  limit 5").show()
+--------+----------+--------+-----+------+----------+--------------+-------+------------+-------------+-------------+-------+---+
|order_id|order_type|     uid|po_id|status|user_level|pre_user_level| credit|down_payment|open_order_id|   createTime|  month|day|
+--------+----------+--------+-----+------+----------+--------------+-------+------------+-------------+-------------+-------+---+
|    null|      null|14057428| null|    90|      null|          null|2705000|        null|         null|1546920940672|2019_01| 08|
|    null|      null| 5833953| null|    90|      null|          null|2197000|        null|         null|1546920941872|2019_01| 08|
|    null|      null|10408291| null|   100|      null|          null|1386000|        null|         null|1546920941979|2019_01| 08|
|    null|      null|  621761| null|   100|      null|          null| 100000|        null|         null|1546920942282|2019_01| 08|
|    null|      null|10408291| null|   100|      null|          null|1386000|        null|         null|1546920942480|2019_01| 08|
+--------+----------+--------+-----+------+----------+--------------+-------+------------+-------------+-------------+-------+---+

Как я могу заставить sparksql возвращать ожидаемые результаты ???

пс: Я выполняю текущий sql в spark и hive и нахожу разные результаты;

SELECT * FROM kafka_table.risk_order_user_level_info rouli
WHERE rouli.month = '2019_01' AND rouli.day = '08'
and order_id IN (
 39906526,
 39870975,
 39832606,
 39889240,
 39836630
)

два результата two results

это вопрос, где размещена эта страница, ударил меня;

Я также проверяю номер таблицы в таблице двумя способами, указанными выше, и количество совпадений

Ответы [ 2 ]

0 голосов
/ 15 января 2019

Решено самостоятельно. данные в этой таблице записываются sparksql, но имя поля в scala (spark) отличается от hive (создать таблицу sql).

например: orderID (scala), но order_id (sql)

0 голосов
/ 09 января 2019

Включите условие rouli.order_id >0 в ваш запрос SQL. Вы увидите ненулевые записи в выводе spark sql.

Примечание: Limit будет возвращать записи в случайном порядке. Результаты, показанные в двух вышеупомянутых сценариях, относятся к разным идентификаторам order_ids.

...