protected void propagateCommonCatalogTableProperties( CatalogStorage tableStorage, Properties props, String prefix) { props.put(prefix + "_storage_type", tableStorage.getType().name()); props.put(prefix + "_catalog_url", tableStorage.getCatalogUrl()); props.put(prefix + "_database", tableStorage.getDatabase()); props.put(prefix + "_table", tableStorage.getTable()); }
protected void propagateCatalogTableProperties( Output output, CatalogStorage tableStorage, Properties props) { String prefix = "falcon_" + output.getName(); propagateCommonCatalogTableProperties(tableStorage, props, prefix); // pig and java actions require partition expression as "key1=val1, key2=val2" props.put(prefix + "_partitions_pig", "${coord:dataOutPartitions('" + output.getName() + "')}"); props.put( prefix + "_partitions_java", "${coord:dataOutPartitions('" + output.getName() + "')}"); // hive requires partition expression as "key1='val1', key2='val2'" (with quotes around values) // there is no direct EL expression in oozie List<String> partitions = new ArrayList<String>(); for (String key : tableStorage.getDatedPartitionKeys()) { StringBuilder expr = new StringBuilder(); expr.append("${coord:dataOutPartitionValue('") .append(output.getName()) .append("', '") .append(key) .append("')}"); props.put(prefix + "_dated_partition_value_" + key, expr.toString()); partitions.add(key + "='" + expr + "'"); } props.put(prefix + "_partitions_hive", StringUtils.join(partitions, ",")); }
private static String getTableFeedInstanceName( Feed feed, String feedInstancePath, Storage.TYPE storageType) throws URISyntaxException { CatalogStorage instanceStorage = (CatalogStorage) FeedHelper.createStorage(storageType.name(), feedInstancePath); return feed.getName() + "/" + instanceStorage.toPartitionAsPath(); }