Агрегировать столбец как массив, упорядоченный по другому столбцу

Если вы выполняете работу по сокращению карты из командной строки, вы можете увеличить кучу, используя параметр -D 'mapreduce.map.java.opts=-Xmx1024m' и / или -D 'mapreduce.reduce.java.opts = -Xmx1024m'. Пример:

hadoop --config /etc/hadoop/conf jar /usr/lib/hbase-solr/tools/hbase-indexer-mr-*-job.jar --conf /etc/hbase/conf/hbase-site.xml -D 'mapreduce.map.java.opts=-Xmx1024m' --hbase-indexer-file $HOME/morphline-hbase-mapper.xml --zk-host 127.0.0.1/solr --collection hbase-collection1 --go-live --log4j /home/cloudera/morphlines/log4j.properties

Обратите внимание, что в некоторых документах Cloudera они все еще используют старые параметры mapred.child.java.opts, mapred.map.child.java.opts и mapred.reduce.child.java.opts. Эти параметры больше не работают для Hadoop 2 (см. . Какова связь между «mapreduce.map.memory.mb» и «mapred.map.child.java.opts» в Apache Hadoop YARN? ). [/ д2]

0
задан MichaelChirico 18 January 2019 в 04:30
поделиться

1 ответ

Вы можете использовать array_agg(value ORDER BY time [ ASC | DESC ]), как в примере ниже.

К сожалению, я не знаю, была ли эта опция доступна в 0.193. По крайней мере, этот ответ, надеюсь, будет полезен для других.

presto:tiny> with example_table as (
          ->     select * from (
          ->         values ('A', 1, 7), ('A', 2, 4), ('A', 3, 3),
          ->              ('B', 4, 6), ('B', 5, 5), ('A', 6, 2),
          ->              ('C', 7, 9), ('C', 8, 8)
          ->         ) example_table("id", "time", "value")
          -> )
          -> select array_agg(value order by time)
          -> from example_table
          -> group by id
          -> ;
    _col0
--------------
 [6, 5]
 [7, 4, 3, 2]
 [9, 8]
(3 rows)
0
ответ дан Piotr Findeisen 18 January 2019 в 04:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: