我在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
关于如何在这种情况下获取确切数据类型的任何想法?
答案 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`