有没有办法在两个节点中使用 group by 函数,但作为通过 JDBC 连接的一个结果,有一个选项可以设置一个备份节点,但我们想在 2 个服务器上设置 group by 函数以获得一个查询,这里是 spark有 jdbc 连接
port_82 = "jdbc:mysql://******:**/packetlogic"
port_85 = "jdbc:mysql://******:**/packetlogic"
properties = {
"user": "**",
"password": "**",
"driver": "",
"ConnectionLoadBalance": 1
}
df =spark.read.format("JDBC").options(
url = port_82,
query = "select SUM(A),SUM(B),AVG(C),D,C FROM T WHERE ***** GROUP BY D,C ",
**properties
).load()
最佳答案
首先,创建表并像这样插入记录: 并编写如下代码:
Create table EMP (name varchar(12),id int(5),salary int(10));
INSERT INTO EMP(name,id,salary) VALUES("Arun",1,2500 );
INSERT INTO EMP(name,id) VALUES("Dinesh",3 );
INSERT INTO EMP(name,id,salary) VALUES("Karthik",3,5000 );
INSERT INTO EMP(name,id,salary) VALUES("Tamil",4,2500 );
public static void main(String[] args) throws Exception {
Class.forName("com.mysql.jdbc.Driver").newInstance();
Connection conn = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/Arun", "root", "root");
Statement st = conn.createStatement();
st = conn.createStatement();
ResultSet rs = st
.executeQuery(" SELECT name,SUM(salary)from Emp GROUP BY name");
while (rs.next()) {
String name = rs.getString(1);
String salary = rs.getString(2);
System.out.println(name);
System.out.println(salary);
}
rs.close();
st.close();
conn.close();
关于mysql - 使用 JDBC 对数据进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55374462/