Apache钻取显示数据类型'ANY'

时间:2018-05-29 13:00:02

标签: hdfs apache-drill

我在dfs中的csv文件上创建了一个视图'names'。我尝试使用describe语句:

describe dfs.root.`names`

这是我的创建视图声明:

create view dfs.root.`names` as select id,name,city from dfs.root.`names.csv`

在输出中,在数据类型列中,我将所有列的数据类型称为“ANY”

以下是我的csv文件内容:

id,name,city
1,shrinivas,pune
2,harshal,morgaon
3,nikhil,chiplun
4,ravinder,chandigarh

我的配置中的extractHeader参数设置为true

关于如何在这种情况下获取确切数据类型的任何想法?

2 个答案:

答案 0 :(得分:1)

目前,DESCRIBE不支持在文件系统中创建的表。 create view语句不会探索查询表的实际模式;它只解析并保留查询。

您可以尝试使用typeOf(columnName)来代替:

class City{
  String name; //if you only care city name
  ....
  ....
  public boolean equals(Object myCity){  // override equals(). only look at the name.
    City city2 = (City) myCity;
    return this.getName().equals(city2.getName());  //String itself has a .equal() to compare
  }

  public int HashCode(){  // override HashCode(). 
    return name.hashCode();  //also String itself has a .hashCode() to check equality
  }

  public String getName(){
    return name;
  }

...
...
}

答案 1 :(得分:1)

您需要在创建视图期间显式指定每个数据类型:

create view dfs.root.`names` as select cast(id as smallint) ID,cast(name as varchar) NAME,cast(city as varchar) CITY from dfs.root.`names.csv`