0
ハイブ・ステートメント・インスタンス(ソース・テーブルとターゲット・テーブルの両方)を使用して、javaクラスの他のテーブルからハイブ・テーブルにデータを挿入しようとしています。ハイブ文がJavaクラスを使用してテーブルにデータを挿入しない
すべてのソーステーブルにはデータが含まれています。それはデータを持っていSELECTクエリを実行すると
@Component
public class HiveExecutor implements IExecutor{
static final Logger logger = Logger.getLogger(HiveExecutor.class);
@Autowired
ConnectionFactory connectionFactory;
@Override
public ResultSetHolder executeSql(String sql) throws IOException {
logger.info(" Inside hive executor for SQL : " + sql);
ResultSetHolder rsHolder = new ResultSetHolder();
IConnector connector = connectionFactory.getConnector("hive");
ConnectionHolder conHolder = connector.getConnection();
Object obj = conHolder.getConObject();
if(obj instanceof Statement) {
Statement stmt = (Statement) obj;
ResultSet rs=null;
try {
if(sql.toUpperCase().contains("INSERT")) {
int result = stmt.executeUpdate(sql);
if(result != 0)
logger.info("Successfull insertion operation. Number of rows changed: "+result);
else
logger.info("Unsuccessfull insertion operation.");
}
else
rs = stmt.executeQuery(sql);
rsHolder.setResultSet(rs);
rsHolder.setType(ResultType.resultset);
} catch (SQLException e) {
e.printStackTrace();
}
}
return rsHolder;
}
@Override
public Boolean registerTempTable(DataFrame df, String tableName) {
// TODO Auto-generated method stub
return null;
}
}
が、それは/失敗したINSERTクエリの場合は0を返します。
次のクラスは、上記のクエリを実行します。
hive CLIから同じINSERTクエリを実行すると、期待どおりに動作し、ターゲットテーブルにデータが挿入されます。
エディタで書式設定した後にコードを投稿しようとしました。 – Darshan
例外は、パーティションパラメータ、ハイブプロパティパーティション、およびパーティション.modeが動的に生成されたINSERTクエリに追加されたためです。実際のクエリが問題を解決する前にそれらを実行することによって。 –