Closed baisui1981 closed 1 year ago
已经支持,并且做了如下扩展:
伙伴插件工厂
DataXReader使用com.qlangtech.tis.plugin.CompanionPluginFactory
为 SelectedTab 创建伙伴插件,为DataXReader的SelectedTab提供属性扩展。
以下是在 DataXMongodbReader
中使用的例子:
public class DataXMongodbReader extends BasicDataXRdbmsReader<MangoDBDataSourceFactory> implements IMongoTableFinder {
public static class DefaultDescriptor extends BasicDataXRdbmsReaderDescriptor //
implements SubForm.ISubFormItemValidate, CompanionPluginFactory<SelectedTabExtend> {
@Override
public SelectedTabExtend getCompanionPlugin(UploadPluginMeta pluginMeta) {
// ...
return SelectedTabExtend.getBatchPluginStore(pluginMeta.getPluginContext(),
pluginMeta.getDataXName(true)).find(tabName, false);
}
@Override
public Descriptor<SelectedTabExtend> getCompanionDescriptor() {
return TIS.get().getDescriptor(MongoSelectedTabExtend.class);
}
}
}
SelectedTab
继承的情况下对DataXHiveReader.selectedTabs
的列表实例(SelectedTab) 进行扩展,使用com/qlangtech/tis/hive/reader/DataXHiveReader.selectedTabs.json
配置文件 ,改变默认cols的显示方式 com.qlangtech.tis.extension.util.PluginExtraProps.ViewType 的 idlist 进行修改。
{
"cols": {
"viewtype": "tuplelist", //改变成table方式显示
"elementCreator": "com.qlangtech.tis.plugin.datax.mongo.MongoCMetaCreatorFactory",
}
}
idlist | tuplelist |
---|---|
source 自定义扩展 element(CMeta)创建方法:
public interface ElementCreatorFactory{
CMeta create(JSONObject targetCol);
}
由于dataX reader 中不能扩展 selectedTab,然后又通过自定义elementCreator
属性修改了 selectedTable中cols中的Element元素类型,需要在selectedTab 表单提交的时,对表单进行校验,所以引入:
可以让selectTab 在提交时由宿主DataX Reader 执行表单校验:
interface ISubFormItemValidate {
/**
* 校验全部 selected tabs 表单
*
* @param msgHandler
* @param context
* @param props
* @param subFormFilter
* @param formData
* @return
*/
boolean validateSubFormItems(IControlMsgHandler msgHandler, Context context, BaseSubFormProperties props,
IPropertyType.SubFormFilter subFormFilter, AttrVals formData);
/**
* 校验单个selected表单
*
* @param msgHandler
* @param context
* @param tab
* @return
*/
boolean validateSubForm(IControlMsgHandler msgHandler, Context context, SelectedTab tab);
}
离线分析完成之后需要将离线分析结果导入到外部存储中,需要Hive DataX Reader插件,之前hdfs Reader虽然也能用,但是配置太复杂,需要借助Hive MetaData 数据来反射hive的表存储信息,自动生成col meta