Article January 23, 2024

java

Words count 8.7k Reading time 8 mins. Read count 0

run jar

主类必须是在cp第一个包中,支持*匹配

更新jar包内class文件

jar uvf hadoop-common-2.8.3-lg.jar org/apache/hadoop/fs/FileUtil.class

jar: 包是Java中所特有一种压缩文档
-u 添加文件到jar包中
-v 生成详细的报造,并输出至标准设备
-f 指定jar包的文件名
[jar文件] jar包的路径
[欲替换的class(注意,需同样的目录)] class文件目录,必须与jar中目录一样

IllegalArgumentException at java.nio.CharBuffer.allocate(CharBuffer.java:334)

原因: 单行数据过大

问题复现:

1
2
3
4
5
6
// spark-shell + 本地,触发上述报错,获得文件和行号
new org.apache.hadoop.io.Text(x)
// 定位数据
less +4828553 -N 2021090100_nda_0.txt
// 过滤数据
awk '{ if (length($0)<10000) print $0}' 2021090100_nda_0.txt > filter_nda

欧元分隔符输出

目标:输出GB2312编码的欧元符€

方案:需要使用byte方式写出:(不能是char、string)

1
2
3
4
5
6
7
8

FileOutputStream fos = new FileOutputStream(f);
byte[] bb = new byte[1];
bb[0] = (byte)0x80; // 即€
fos.write(bb);
fos.write("123abc中文".getBytes("gb2312"));
fos.flush();
fos.close();

https://ask.csdn.net/questions/743012

Python:以wb模式打开文件
1
f.write(b'\x80')

临时代码测试类

1
2
3
4
5
6
package test;

javac test/*.java
java -cp ./ test.T

java -cp ./*:/data/soft/flink/lib/* rocketMQ.PhotoLiveJob
1
2
javac DbInfo.java  
java -cp mysql-connector-java-5.1.47.jar:. DbInfo

jshell连接DB

还需要加载jar包:

  • jshell –class-path myOwnClassPath
  • /env –class-path /data/soft/zeppelin/local-repo/jdbc/hive-jdbc-2.3.10-standalone.jar
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.DatabaseMetaData;

public class DBConnectionDemo {
public static void main(String[] args) {
// JDBC连接URL
String url = "jdbc:hive://localhost:3306/mydatabase";
String u = "root";
String pw = "password";

try {
Class.forName("org.apache.hive.jdbc.HiveDriver");
// 创建数据库连接
Connection connection = DriverManager.getConnection(url, u, pw);
// 在此处执行数据库操作
DatabaseMetaData meta = connection.getMetaData();
meta.getDriverName();//zeppelin自动补全功能需要读取到jar包中MANIFEST.MF的Implementation-Title: Hive JDBC字段

// 关闭连接
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}

0%