import javax.sql.DataSource;
import org.apache.hadoop.hive.jdbc.HiveConnection;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.jdbc.datasource.DataSourceUtils;
@Configuration
public class HiveConfig {
@Autowired
private DataSource dataSource;
@Bean
public HiveConnection hiveConnection() throws Exception {
return (HiveConnection) DataSourceUtils.getConnection(dataSource);
}
}
import org.apache.hadoop.hive.jdbc.HiveConnection;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class HiveService {
@Autowired
private HiveConnection hiveConnection;
// Utiliza hiveConnection para ejecutar consultas y operaciones en Hive.
// Por ejemplo:
// public void executeQuery(String query) {
// // ...
// }
// Otros métodos y lógica de negocio
}
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class InsertXmlAsBinary {
public static void main(String[] args) {
String xmlFilePath = "/ruta/al/archivo.xml";
String tableName = "mi_tabla";
try {
byte[] xmlBytes = Files.readAllBytes(Paths.get(xmlFilePath));
insertXmlAsBinary(xmlBytes, tableName);
System.out.println("Archivo XML insertado como binario en Hive.");
} catch (IOException e) {
e.printStackTrace();
}
}
public static void insertXmlAsBinary(byte[] xmlBytes, String tableName) {
String jdbcURL = "jdbc:hive2://localhost:10000/default";
String username = "your_username";
String password = "your_password";
try (Connection connection = DriverManager.getConnection(jdbcURL, username, password)) {
String insertQuery = "INSERT INTO " + tableName + " (xml_data) VALUES (?)";
PreparedStatement preparedStatement = connection.prepareStatement(insertQuery);
preparedStatement.setBytes(1, xmlBytes);
preparedStatement.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
beeline -u jdbc:hive2://localhost:10000/default -n your_username -p your_password
LOAD DATA LOCAL INPATH '/ruta/al/archivo.xml' INTO TABLE mi_tabla;
INSERT INTO mi_tabla VALUES (1, 'Juan', 30);
COMMIT;
CREATE TABLE mi_tabla_temp (id INT, nombre STRING, edad INT);
INSERT INTO mi_tabla_temp VALUES (1, 'Juan', 31);
INSERT OVERWRITE TABLE mi_tabla
SELECT id, nombre, edad FROM mi_tabla_temp;
Con participación
-- Crear una tabla temporal con los nuevos datos
CREATE TABLE mi_tabla_temp (fecha STRING, columna1 INT, columna2 STRING);
INSERT INTO mi_tabla_temp VALUES ('2023-07-31', 100, 'Nuevo valor');
-- Sobrescribir la partición existente con los nuevos datos
INSERT OVERWRITE TABLE mi_tabla PARTITION (fecha='2023-07-31')
SELECT columna1, columna2 FROM mi_tabla_temp;
Con join
-- Actualizar los valores de la columna2 en la partición correspondiente a la fecha '2023-07-31'
INSERT OVERWRITE TABLE mi_tabla PARTITION (fecha='2023-07-31')
SELECT
t.columna1,
CASE
WHEN t.fecha = '2023-07-31' THEN tmp.columna2_actualizada
ELSE t.columna2
END AS columna2,
t.columna3 -- Suponiendo que hay más columnas en la tabla original
FROM
mi_tabla t
LEFT JOIN
mi_tabla_temp tmp
ON
t.fecha = tmp.fecha;
Particiones
CREATE TABLE mi_tabla (
columna1 INT,
columna2 STRING,
columna3 STRING
)
PARTITIONED BY (columna2 STRING, columna3 STRING);
ALTER TABLE mi_tabla ADD PARTITION (columna2='valor1');
ALTER TABLE mi_tabla ADD PARTITION (columna2='valor2');
-- Agrega más particiones si es necesario
INSERT INTO TABLE mi_tabla PARTITION (columna2='valor1') VALUES (1);
INSERT INTO TABLE mi_tabla PARTITION (columna2='valor2') VALUES (2);
-- Actualizar el valor de columna1 en la partición 'valor1'
INSERT OVERWRITE TABLE mi_tabla PARTITION (columna2='valor1') VALUES (10);
-- Insertar nuevos datos en una partición existente
INSERT INTO TABLE mi_tabla PARTITION (columna2='valor2') VALUES (3);
-- Insertar nuevos datos en una nueva partición
INSERT INTO TABLE mi_tabla PARTITION (columna2='valor3') VALUES (4);
—
CREATE TABLE tabla_principal (
id INT,
columna_actualizable STRING
)
PARTITIONED BY (columna2 STRING);
CREATE TABLE tabla_actualizacion (
id INT,
nueva_columna_actualizable STRING
);
Eliminate
CREATE TABLE mi_tabla_nueva AS
SELECT *
FROM mi_tabla
WHERE columna_eliminable <> 'valor_a_eliminar';
INSERT OVERWRITE TABLE mi_tabla
SELECT * FROM mi_tabla_nueva;





