我正在尝试使用Hive Java API更新Hive表分区。
public class HiveMetastoreChecker {
public static void main(String[] args) {
final String dbName = "db_name";
final String tableName = "db_name.table_name";
CheckResult result = new CheckResult();
try {
Configuration configuration = new Configuration();
HiveConf conf = new HiveConf();
conf.addResource(configuration);
Hive hive = Hive.get(conf, true);
HiveMetaStoreChecker checker = new HiveMetaStoreChecker(hive);
Table table = new Table(dbName, tableName);
table.setDbName(dbName);
table.setInputFormatClass(TextInputFormat.class);
table.setOutputFormatClass(HiveIgnoreKeyTextOutputFormat.class);
table = hive.getTable(dbName, tableName);
checker.checkMetastore(dbName, tableName, null, result);
System.out.println(table.getDataLocation());
List<CheckResult.PartitionResult> partitionNotInMs = result.getPartitionsNotInMs();
System.out.println("not in ms " + partitionNotInMs.size());
List<org.apache.hadoop.hive.ql.metadata.Partition> partitions = hive.getPartitions(table);
System.out.println("partitions size " + partitions.size());
AddPartitionDesc apd = new AddPartitionDesc(table.getDbName(), table.getTableName(), false);
List<String> finalListOfPartitionsNotInMs = new ArrayList<String>();
for (CheckResult.PartitionResult part : partitionNotInMs){
if(!finalListOfPartitionsNotInMs.contains(part.getPartitionName().replace("/",""))){
finalListOfPartitionsNotInMs.add(part.getPartitionName().replace("/",""));
}
}
for (String partition:finalListOfPartitionsNotInMs) {
apd.addPartition(Warehouse.makeSpecFromName(partition), table.getDataLocation().toString());
}
hive.createPartitions(apd);
} catch (HiveException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (MetaException e) {
e.printStackTrace();
}
}
如有任何帮助,不胜感激。
谢谢。
蜂巢MSCK修复失败?如果是,则检查分区列名是否是大写字母。我发现了aws s3上的分区类似于DCA=1000的相同问题。
如果是这种情况,那么使用Spark SQL执行MSCK修复,它将owrk,以防您不想将分区重命名为小写。
我正在回顾一个旧的Spark软件,它必须并行运行许多小的查询和计数()并使用直接的hive-sql。 在过去,该软件通过在shell()上直线运行每个查询来解决“并行化查询的问题”。我不能用现代新鲜的Spark,此刻只有Spark V2.2。下面的片段说明了完整的SQL查询方法。 有一种“Spark方式”可以访问Hive并运行SQL查询,性能(略)更好,而且Spark配置的重用性更好? 没有丢失纯
蜂巢平台(OpenComb Platform)是一个基于 PHP 5.3 实现的深度云计算应用框架。蜂巢采用了扩展模式,系统中的功能和特性,都由扩展提供。 因此,用户可以通过开发和安装扩展来部署各种类型的互联网应用。
我正在执行一个HQL查询,该查询几乎没有连接、联合和插入覆盖操作,如果只运行一次,它就可以正常工作。 如果我第二次执行相同的作业,我就会面临这个问题。有人能帮我确定在哪种情况下我们会得到这个异常吗?
我正在尝试连接到R中的hive。我已经在我的R环境中加载了RJDBC和rJava库。我使用的是一台Linux服务器,hadoop(hortonworks sandbox 2.1)和R(3.1.1)安装在同一个盒子中。这是我用来连接的脚本: 我得到了这个错误: 错误。jcall(drv@jdrv,“Ljava/sql/Connection;”,“连接”,如图所示。字符(url)[1],:java。l
在配置单元中执行select语句时,我得到了一个错误。
我按照多个教程尝试使用RJDBC连接到Hive,但没有成功。 以下是我所拥有的: 我已经下载并放置在的文件。 我也尝试了最近的版本,但总是与相同的Cloudera版本同步。即使我的版本是5。XX。 我很确定是正确的,因为我已经使它在Python中与具有相同主机名/端口的一起工作。 错误: 错误在. jcall(drv@jdrv,"Ljava/sql/Connection;","Connection