Hive覚え書き・その2

今はデフォルト・パーティションについて調査中.

ソースコード

enum ConfVars にある DEFAULTPARTITIONNAME で参照されていると思われるので調査.

grep -nIR 'DEFAULTPARTITIONNAME' --include '*.java' ./*
./common/src/java/org/apache/hadoop/hive/conf/HiveConf.java:509:    DEFAULTPARTITIONNAME("hive.exec.default.partition.name", "__HIVE_DEFAULT_PARTITION__",
./common/src/java/org/apache/hadoop/hive/conf/HiveConf.java:3908:    ConfVars.DEFAULTPARTITIONNAME.varname,
./common/src/test/org/apache/hadoop/hive/conf/TestHiveConf.java:94:    checkHiveConf("test.var.hiveconf.property", ConfVars.DEFAULTPARTITIONNAME.getDefaultValue());
./hcatalog/core/src/main/java/org/apache/hive/hcatalog/mapreduce/DynamicPartitionFileRecordWriterContainer.java:91:    this.HIVE_DEFAULT_PARTITION_VALUE = HiveConf.getVar(context.getConfiguration(), HiveConf.ConfVars.DEFAULTPARTITIONNAME);
./metastore/src/java/org/apache/hadoop/hive/metastore/hbase/HBaseStore.java:927:      defaultPartName = HiveConf.getVar(getConf(), HiveConf.ConfVars.DEFAULTPARTITIONNAME);
./metastore/src/java/org/apache/hadoop/hive/metastore/hbase/HBaseUtils.java:1011:          partitionKeys.add(HiveConf.getVar(conf, HiveConf.ConfVars.DEFAULTPARTITIONNAME));
./metastore/src/java/org/apache/hadoop/hive/metastore/MetaStoreDirectSql.java:135:    defaultPartName = HiveConf.getVar(conf, ConfVars.DEFAULTPARTITIONNAME);
./metastore/src/java/org/apache/hadoop/hive/metastore/ObjectStore.java:2491:      defaultPartName = HiveConf.getVar(getConf(), HiveConf.ConfVars.DEFAULTPARTITIONNAME);
./ql/src/java/org/apache/hadoop/hive/ql/exec/ColumnStatsTask.java:364:            this.conf.getVar(ConfVars.DEFAULTPARTITIONNAME) : partVal.toString());
./ql/src/java/org/apache/hadoop/hive/ql/exec/DDLTask.java:1105:        if (part.getName().equals(conf.getVar(HiveConf.ConfVars.DEFAULTPARTITIONNAME))) {
./ql/src/java/org/apache/hadoop/hive/ql/exec/TableScanOperator.java:258:    defaultPartitionName = HiveConf.getVar(hconf, HiveConf.ConfVars.DEFAULTPARTITIONNAME);
./ql/src/java/org/apache/hadoop/hive/ql/metadata/Hive.java:2569:    String defaultPartitionName = HiveConf.getVar(conf, ConfVars.DEFAULTPARTITIONNAME);
./ql/src/java/org/apache/hadoop/hive/ql/optimizer/ppr/PartitionPruner.java:476:    String defaultPartitionName = conf.getVar(HiveConf.ConfVars.DEFAULTPARTITIONNAME);
./ql/src/java/org/apache/hadoop/hive/ql/parse/BaseSemanticAnalyzer.java:1474:    String defaultPartitionName = HiveConf.getVar(conf, HiveConf.ConfVars.DEFAULTPARTITIONNAME);
./ql/src/java/org/apache/hadoop/hive/ql/parse/DDLSemanticAnalyzer.java:244:    reservedPartitionValues.add(HiveConf.getVar(conf, ConfVars.DEFAULTPARTITIONNAME));
./ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java:6594:              conf.getVar(HiveConf.ConfVars.DEFAULTPARTITIONNAME),
./ql/src/java/org/apache/hadoop/hive/ql/stats/StatsUtils.java:438:                ci.getType().getTypeName(), conf.getVar(ConfVars.DEFAULTPARTITIONNAME)));

今のところクエリのwhere句でデフォルト・パーティション値を使ったときにどういう動作をするかを知りたいので (たぶんQuery Languageの略である) qlプロジェクトを見ていく. まずはクエリの処理の部分を探す.

とりあえずファイルを一覧する. よく見るとmavenの標準的な構成じゃないんですね.

tree -L 6 ./ql/src/java/
./ql/src/java/
└── org
    └── apache
        ├── hadoop
        │   └── hive
        │       ├── llap
        │       │   ├── ChannelOutputStream.java
        │       │   ├── DebugUtils.java
        │       │   ├── LlapOutputFormat.java
        │       │   ├── LlapOutputFormatService.java
        │       │   └── LlapRecordWriter.java
        │       ├── metastore
        │       │   └── SynchronizedMetaStoreClient.java
        │       └── ql
        │           ├── CommandNeedRetryException.java
        │           ├── CompilationOpContext.java
        │           ├── Context.java
        │           ├── Driver.java
        │           ├── DriverContext.java
        │           ├── ErrorMsg.java
        │           ├── HashTableLoaderFactory.java
        │           ├── HiveDriverRunHook.java
        │           ├── HiveDriverRunHookContext.java
        │           ├── HiveDriverRunHookContextImpl.java
        │           ├── MapRedStats.java
        │           ├── QueryDisplay.java
        │           ├── QueryPlan.java
        │           ├── QueryProperties.java
        │           ├── QueryState.java
        │           ├── debug
        │           ├── exec
        │           ├── history
        │           ├── hooks
        │           ├── index
        │           ├── io
        │           ├── lib
        │           ├── lockmgr
        │           ├── log
        │           ├── metadata
        │           ├── optimizer
        │           ├── parse
        │           ├── plan
        │           ├── ppd
        │           ├── processors
        │           ├── security
        │           ├── session
        │           ├── stats
        │           ├── thrift
        │           ├── tools
        │           ├── txn
        │           ├── udf
        │           └── util
        └── tez
            └── dag
                └── api
                    └── TaskSpecBuilder.java

33 directories, 22 files

org.apache.hadoop.hive.ql あたりを探せば良さそう.

今日はここまで.