Calcite-[5]-example-csv简析

来源:互联网 发布:yum 不支持python 2.7 编辑:程序博客网 时间:2024/05/29 09:01

一 源码下载

参照下文,下载编译源码

Calcite-[1]-Tutorial

运行CsvTest 总体感知csv样例工程

输出

Test ignored.FredEricJohnWilmaAlice100, Fred, 10, , , 30, 25, true, false, 1996-08-03110, Eric, 20, M, San Francisco, 3, 80, null, false, 2001-01-01110, John, 40, M, Vancouver, 2, null, false, true, 2002-05-03120, Wilma, 20, F, , 1, 5, null, true, 2005-09-07130, Alice, 40, F, Vancouver, 2, null, false, true, 2007-01-01FredEricJohnWilmaAliceTest ignored.SalesMarketingAccounts100, Fred, 10, , , 30, 25, true, false, 1996-08-03110, Eric, 20, M, San Francisco, 3, 80, null, false, 2001-01-01110, John, 40, M, Vancouver, 2, null, false, true, 2002-05-03120, Wilma, 20, F, , 1, 5, null, true, 2005-09-07130, Alice, 40, F, Vancouver, 2, null, false, true, 2007-01-01100, Fred, 10, , , 30, 25, true, false, 1996-08-03110, Eric, 20, M, San Francisco, 3, 80, null, false, 2001-01-01110, John, 40, M, Vancouver, 2, null, false, true, 2002-05-03120, Wilma, 20, F, , 1, 5, null, true, 2005-09-07130, Alice, 40, F, Vancouver, 2, null, false, true, 2007-01-01

二、简析1-model.json

model.json
{  "version": "1.0",  "defaultSchema": "SALES",  "schemas": [    {      "name": "SALES",      "type": "custom",      "factory": "org.apache.calcite.adapter.csv.CsvSchemaFactory",      "operand": {        "directory": "sales" }    }  ]}

(1)CsvSchemaFactory
CsvSchemaFactory根据directory构建CsvSchema
CsvSchemaFactory::create
根据json中的directory和flavor 构建一个CsvSchema(directoryFile, flavor);

简要如下:

public class CsvSchemaFactory implements SchemaFactory { public static final CsvSchemaFactory INSTANCE = new CsvSchemaFactory();  private CsvSchemaFactory() {  }  public Schema create(SchemaPlus parentSchema, String name,      Map<String, Object> operand) {    final String directory = (String) operand.get("directory");    File directoryFile = new File(directory);    String flavorName = (String) operand.get("flavor");    CsvTable.Flavor flavor = CsvTable.Flavor.SCANNABLE;    return new CsvSchema(directoryFile, flavor);  }}
(2)CsvSchema
CsvSchema:Schema mapped onto a directory of CSV files. Each table in the schema is a CSV file in that directory.
将文件和table做个映射,每个文件映射为一个table
public class CsvSchema extends AbstractSchema {  private final File directoryFile;  private final CsvTable.Flavor flavor;  private Map<String, Table> tableMap;

CsvSchema::createTableMap private Map<String, Table> createTableMap()        主要根据目录遍历所有 ".csv", ".csv.gz", ".json", ".json.gz",对遍历的文件,调用createTable构建表CsvSchema::createTable   调用 CsvTranslatableTable or CsvScannableTable or CsvFilterableTable构建表



阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 svn 小乌龟 怎么喂小乌龟 乌龟故事 娃娃乌龟 制作小乌龟 小乌龟吊坠 乌龟 吉祥物 小乌龟不吃 乌龟尾巴 小乌龟怎么样 怎么画乌龟 救救小乌龟 乌龟笔袋 怎么区分乌龟和王八 乌龟漂浮 乌龟断尾 乌龟怎么养活 描写乌龟 乌龟突然死亡 小乌龟的名字 乌龟受奖 小乌龟食 铁乌龟 乌龟能淹死吗 小乌龟 svn 卖小乌龟 小乌龟包 神奇小乌龟 两只小乌龟 乌龟狂奔 宠物 乌龟 乌龟可以干养吗 乌龟的饲料 乌龟的声音 可爱 乌龟 聪明的小乌龟 怎么养巴西龟 幼龟怎么养 自制乐器儿童小乐器 乐器小鼓 大珠小珠落玉盘是什么乐器