7
A
答えて
12
私はこの動作を模倣する組み込み関数またはUDFを認識していませんが、HIVE 0.13
を使用している場合は、row_number()
関数を使用して目的の結果を得ることができます。これは、以下のリンクからコピーされた正しい答えである
select pk, col_1, col_2, ... , col_n
from (
select pk, col_1, col_2, ... , col_n, row_number() OVER (ORDER by pk) as rank
from some_database.some_table
) x
where rank between 31 and 50
0
public class CountRatingQueryBuilder {
private static final String SCORING_TABLE_NAME = "web_resource_rating";
private final Connection connection;
private final ScoringMetadata scoringMetadata;
private final SelectSelectStep select;
private final Factory create;
public CountRatingQueryBuilder(Connection connection, ScoringMetadata scoringMetadata){
this.connection = connection;
this.scoringMetadata = scoringMetadata;
create = new Factory(this.connection, SQLDialect.MYSQL);
select = create.select();
withSelectFieldsClause();
}
public CountRatingQueryBuilder withLimit(int limit){
select.limit(limit);
return this;
}
public CountRatingQueryBuilder withRegionId(Integer regionId){
select.where(REGION_ID.field().equal(regionId));
return this;
}
public CountRatingQueryBuilder withResourceTypeId(int resourceTypeId){
select.where(RESOURCE_TYPE_ID.field().equal(resourceTypeId));
return this;
}
public CountRatingQueryBuilder withRequestTimeBetween(long beginTimestamp, long endTimestamp){
select.where(REQUEST_TIME.field().between(beginTimestamp, endTimestamp));
return this;
}
public CountRatingQueryBuilder withResourceId(int resourceId){
select.where(RESOURCE_ID.field().equal(resourceId));
return this;
}
protected void withGroupByClause(){
select.groupBy(REGION_ID.field());
select.groupBy(RESOURCE_TYPE_ID.field());
select.groupBy(RESOURCE_ID.field());
select.groupBy(CONTENT_ID.field());
}
protected void withSelectFieldsClause(){
select.select(REGION_ID.field());
select.select(RESOURCE_TYPE_ID.field());
select.select(CONTENT_ID.field());
select.select(RESOURCE_ID.field());
select.select(Factory.count(HIT_COUNT.field()).as(SUM_HIT_COUNT.fieldName()));
}
protected void withFromClause(){
select.from(SCORING_TABLE_NAME);
}
protected void withOrderByClause(){
select.orderBy(SUM_HIT_COUNT.field().desc());
}
public String build(){
withGroupByClause();
withOrderByClause();
withFromClause();
return select.getSQL().replace("offset ?","");//dirty hack for MySQL dialect. TODO: we can try to implement our own SQL dialect for Hive :)
}
public List<ResultRow> buildAndFetch(){
String sqlWithPlaceholders = build();
List<ResultRow> scoringResults = new ArrayList<ResultRow>(100);
List<Record> recordResults = create.fetch(sqlWithPlaceholders, ArrayUtils.subarray(select.getBindValues().toArray(new Object[select.getBindValues().size()]),0, select.getBindValues().size()-1));//select.fetch();
for(Record record : recordResults){
ResultRowBuilder resultRowBuilder = ResultRowBuilder.create();
resultRowBuilder.withContentType(scoringMetadata.getResourceType(record.getValue(RESOURCE_TYPE_ID.fieldName(), Integer.class)));
resultRowBuilder.withHitCount(record.getValue(SUM_HIT_COUNT.fieldName(), Long.class));
resultRowBuilder.withUrl(record.getValue(CONTENT_ID.fieldName(), String.class));
scoringResults.add(resultRowBuilder.build());
}
return scoringResults;
}
}
希望: これを詳細に理解するためにjooq extend existing dialect. Adopt MySQL dialect to apache Hive dialectを参照してください。
関連する問題
- 1. HIVE - 日付によるグループ機能
- 2. Google Chromeの拡張機能でJavaの拡張機能を使用してタイムゾーンのオフセットを見つける
- 3. Cloudera Hive、Horton Works Hive、MapR Hiveの違いは?
- 4. Hadoop Hiveでのカウント
- 5. IEでのオフセットのオフセットとオフセットの問題
- 6. HIVEでのビューの作成
- 7. LuceneのHive
- 8. Hive(Hadoop)のCOLLECT_SET()
- 9. Hive - JobTracking?
- 10. 機能 - 機能()()()
- 11. $ HIVE_HOME/bin/hive - サービスハイブサーバ
- 12. Hadoop Hive ACIDクエリエラー
- 13. Hive MetaStore Configuration
- 14. HiveでHadoop SequenceFilesを読む
- 15. オーバー機能 - ここでは、親機能
- 16. ボタンで機能しないHTML機能
- 17. 新しい機能はChromeの機能では機能しません
- 18. Apache Hive対ノーマルマップReduce
- 19. Hive JDBC対CLIクライアント
- 20. XML Serde for Hadoop/Hive
- 21. SQL Serverでのdatetimeオフセットのオフセットの取得
- 22. ショーの機能名機能の選択
- 23. HiveとSQL Serverのパフォーマンス
- 24. 「機能」と「機能」の違いは何ですか? VIMで?
- 25. 機能とクラス:未定義の機能
- 26. ショー機能とリスト機能の違い
- 27. Google Chrome拡張機能のリンク機能
- 28. タグvs twig拡張機能の機能
- 29. CouchDBのフィルタ機能と更新機能?
- 30. テーブル機能とパイプライン機能の違い?
これは、MySQLの 'limit 20,30'と同じ機能です。 – nervosol
http://stackoverflow.com/questions/11750312/hive-ql-limiting-number-of-rows-per-each-item –