protected void bindDataSource(DataSourceDescriptor descr) { if (namingContext == null) { return; } log.info("Registering datasource: " + descr.getName()); try { descr.bindSelf(namingContext); } catch (NamingException e) { log.error("Cannot bind datasource '" + descr.getName() + "' in JNDI", e); } }
@Override public DDF loadTextFile(DataSourceDescriptor dataSource) throws DDFException { String hiveTableName = UUID.randomUUID().toString().replace("-", "_"); StringBuilder stringBuilder = new StringBuilder(); List<String> columnNames = new ArrayList<>(); List<Schema.Column> columnList = dataSource.getDataSourceSchema().getColumns(); for (int i = 0; i < columnList.size(); ++i) { columnNames.add(columnList.get(i).getName()); if (i == 0) { stringBuilder.append(columnList.get(i).getName() + " " + columnList.get(i).getType()); } else { stringBuilder.append( ", " + columnList.get(i).getName() + " " + columnList.get(i).getType()); } } String schemaStr = stringBuilder.toString(); TextFileFormat textFileFormat = (TextFileFormat) (dataSource.getFileFormat()); String quote = textFileFormat.getQuote(); String delimiter = textFileFormat.getDelimiter(); String serdesString = "ROW FORMAT SERDE 'com.bizo.hive.serde.csv.CSVSerde' " + "WITH serdeproperties ('separatorChar' = '" + delimiter + "', 'quoteChar' = '" + quote + "')"; URI uri = dataSource.getDataSourceUri().getUri(); String sqlCmd = "create external table " + hiveTableName + " (" + schemaStr + ") " + serdesString + " STORED AS TEXTFILE LOCATION '" + uri.toString() + "'"; this.mDDFManager.sql(sqlCmd, false); DDF ddf = this.mDDFManager.sql2ddf(String.format("select * from %s", hiveTableName), false); ddf.setColumnNames(columnNames); return ddf; }
protected void unbindDataSource(DataSourceDescriptor descr) { if (namingContext == null) { return; } log.info("Unregistering datasource: " + descr.name); try { descr.unbindSelf(namingContext); } catch (NamingException cause) { log.error("Cannot unbind datasource '" + descr.name + "' in JNDI", cause); } }
protected void removeDataSource(DataSourceDescriptor contrib) { unbindDataSource(contrib); datasources.remove(contrib.getName()); }
protected void addDataSource(DataSourceDescriptor contrib) { datasources.put(contrib.getName(), contrib); bindDataSource(contrib); }