/** * Set the valid write id list for the current table scan. */ public static void setValidWriteIdList(Configuration conf, ValidWriteIdList validWriteIds) { conf.set(ValidWriteIdList.VALID_WRITEIDS_KEY, validWriteIds.toString()); LOG.debug("Setting ValidWriteIdList: " + validWriteIds.toString() + " isAcidTable: " + HiveConf.getBoolVar(conf, ConfVars.HIVE_TRANSACTIONAL_TABLE_SCAN, false) + " acidProperty: " + getAcidOperationalProperties(conf)); }
public TableScanDesc(final String alias, List<VirtualColumn> vcs, Table tblMetadata) { this.alias = alias; this.virtualCols = vcs; this.tableMetadata = tblMetadata; isAcidTable = AcidUtils.isAcidTable(this.tableMetadata); if (isAcidTable) { acidOperationalProperties = AcidUtils.getAcidOperationalProperties(this.tableMetadata); } }
public static boolean isInsertOnlyTable(Table table) { return isTransactionalTable(table) && getAcidOperationalProperties(table).isInsertOnly(); }
public TableScanDesc(final String alias, List<VirtualColumn> vcs, Table tblMetadata) { this.alias = alias; this.virtualCols = vcs; this.tableMetadata = tblMetadata; if (tblMetadata != null) { dbName = tblMetadata.getDbName(); tableName = tblMetadata.getTableName(); } isTranscationalTable = AcidUtils.isTransactionalTable(this.tableMetadata); if (isTranscationalTable) { acidOperationalProperties = AcidUtils.getAcidOperationalProperties(this.tableMetadata); } }
/** * Returns whether it is possible to create a valid instance of this class for a given split. * @param conf is the job configuration * @param inputSplit * @return true if it is possible, else false. */ public static boolean canCreateVectorizedAcidRowBatchReaderOnSplit(JobConf conf, InputSplit inputSplit) { if (!(inputSplit instanceof OrcSplit)) { return false; // must be an instance of OrcSplit. } // First check if we are reading any original files in the split. // To simplify the vectorization logic, the vectorized acid row batch reader does not handle // original files for now as they have a different schema than a regular ACID file. final OrcSplit split = (OrcSplit) inputSplit; if (AcidUtils.getAcidOperationalProperties(conf).isSplitUpdate() && !split.isOriginal()) { // When split-update is turned on for ACID, a more optimized vectorized batch reader // can be created. But still only possible when we are *NOT* reading any originals. return true; } return false; // no split-update or possibly reading originals! }
AcidUtils.getAcidOperationalProperties(tableProperties); AcidUtils.setAcidOperationalProperties( jobProperties, isTransactionalTable, acidOperationalProperties);
/** * Set the valid write id list for the current table scan. */ public static void setValidWriteIdList(Configuration conf, TableScanDesc tsDesc) { if (tsDesc.isTranscationalTable()) { String dbName = tsDesc.getDatabaseName(); String tableName = tsDesc.getTableName(); ValidWriteIdList validWriteIdList = getTableValidWriteIdList(conf, AcidUtils.getFullTableName(dbName, tableName)); if (validWriteIdList != null) { setValidWriteIdList(conf, validWriteIdList); } else { // Log error if the acid table is missing from the ValidWriteIdList conf LOG.error("setValidWriteIdList on table: " + AcidUtils.getFullTableName(dbName, tableName) + " isAcidTable: " + true + " acidProperty: " + getAcidOperationalProperties(conf) + " couldn't find the ValidWriteId list from ValidTxnWriteIdList: " + conf.get(ValidTxnWriteIdList.VALID_TABLES_WRITEIDS_KEY)); throw new IllegalStateException("ACID table: " + AcidUtils.getFullTableName(dbName, tableName) + " is missing from the ValidWriteIdList config: " + conf.get(ValidTxnWriteIdList.VALID_TABLES_WRITEIDS_KEY)); } } }
if (isAcidRead) { final AcidUtils.AcidOperationalProperties acidOperationalProperties = AcidUtils.getAcidOperationalProperties(conf); isSplitUpdate = acidOperationalProperties.isSplitUpdate();
AcidUtils.getAcidOperationalProperties(t.getParameters()));
@Test public void testAcidOperationalPropertiesSettersAndGetters() throws Exception { AcidUtils.AcidOperationalProperties oprProps = AcidUtils.AcidOperationalProperties.getDefault(); Configuration testConf = new Configuration(); // Test setter for configuration object. AcidUtils.setAcidOperationalProperties(testConf, true, oprProps); assertEquals(1, testConf.getInt(HiveConf.ConfVars.HIVE_TXN_OPERATIONAL_PROPERTIES.varname, -1)); // Test getter for configuration object. assertEquals(oprProps.toString(), AcidUtils.getAcidOperationalProperties(testConf).toString()); Map<String, String> parameters = new HashMap<String, String>(); // Test setter for map object. AcidUtils.setAcidOperationalProperties(parameters, true, oprProps); assertEquals(oprProps.toString(), parameters.get(HiveConf.ConfVars.HIVE_TXN_OPERATIONAL_PROPERTIES.varname)); // Test getter for map object. assertEquals(1, AcidUtils.getAcidOperationalProperties(parameters).toInt()); parameters.put(hive_metastoreConstants.TABLE_TRANSACTIONAL_PROPERTIES, oprProps.toString()); // Set the appropriate key in the map and test that we are able to read it back correctly. assertEquals(1, AcidUtils.getAcidOperationalProperties(parameters).toInt()); }
AcidUtils.getAcidOperationalProperties(t.getParameters()));
if(AcidUtils.getAcidOperationalProperties(targetTable).isSplitUpdate()) { throw new IllegalStateException("Tables with " + hive_metastoreConstants.TABLE_TRANSACTIONAL_PROPERTIES + "=" +
= AcidUtils.getAcidOperationalProperties(options.getConfiguration()); if(!acidOperationalProperties.isSplitUpdate()) { throw new IllegalStateException("Expected SpliUpdate table: " + split.getPath());
= AcidUtils.getAcidOperationalProperties(conf);
= AcidUtils.getAcidOperationalProperties(options.getConfiguration());
getWriter(reporter, reader.getObjectInspector(), split.getBucket()); AcidUtils.AcidOperationalProperties acidOperationalProperties = AcidUtils.getAcidOperationalProperties(jobConf);
AcidUtils.getAcidOperationalProperties(options.getTableProperties()); } else { this.acidOperationalProperties = AcidUtils.getAcidOperationalProperties(options.getConfiguration());
final boolean isAcidRead = AcidUtils.isFullAcidScan(conf); final AcidUtils.AcidOperationalProperties acidOperationalProperties = AcidUtils.getAcidOperationalProperties(conf);
= AcidUtils.getAcidOperationalProperties(jobConf);
AcidUtils.getAcidOperationalProperties(options.getTableProperties()); } else { this.acidOperationalProperties = AcidUtils.getAcidOperationalProperties(options.getConfiguration());