+2

Đọc dữ liệu từ một file text và ghi lại dưới dạng file parquet trên HDFS sử dụng Spark (Phần 2)

Các bạn chưa đọc phần 1 thì có thể đọc tại đây nha : Đọc dữ liệu từ một file text và ghi lại dưới dạng file parquet trên HDFS sử dụng Spark (Phần 1)

Ghi dữ liệu ra file parquet sử dụng Spark

Khi ta đã lấy được toàn bộ dữ liệu text ra đối tượng listModelLog thì việc ghi dữ liệu ra file parquet là cực kì đơn giản :

SparkSession spark = SparkSession.builder().appName("Write file parquet to HDFS").master("local").getOrCreate();
		
Dataset<Row> listModelLogDF = spark.createDataFrame(listModelLog, ModelLog.class);
listModelLogDF.write().parquet("hdfs://127.0.0.1:9000/usr/trannguyenhan/pageviewlog");

Để kiểm tra xem đã ghi vào file thành công hay chưa, ta đọc dữ liệu từ file parquet đó ra một Dataset và show nó ra như sau :

SparkSession spark = SparkSession.builder().appName("Read file parquet to HDFS").master("local").getOrCreate();
Dataset<Row> parquetFile = spark.read().parquet(
        "hdfs://127.0.0.1:9001/usr/trannguyenhan/pageviewlog");
parquetFile.show();

Kết quả sau khi chạy như dưới thì là bạn đã tạo file parquet thành công :

( Kết quả show ra chỉ tối đa là 20 dòng thôi nha)

Chạy chương trình Java trên Spark

Nếu chỉ Run Application thì chương trình sẽ chỉ chạy trên máy local, để có thể chạy project trên Spark nếu sử dụng Scala thì ta có thể test và kiểm tra luôn bằng Spark-shell, còn nếu sử dụng Java thì phức tạp hơn tí, ta sẽ phải build project ra file jar và submit bằng Spark-submit. Trước tiên hãy thêm plugin maven-jar-plugin để có thể build file jar dễ dàng hơn :

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-jar-plugin</artifactId>
    <version>3.2.0</version>
    <configuration>
        <archive>
            <manifest>
                <addClasspath>true</addClasspath>
                <mainClass>main.Main</mainClass>
            </manifest>
        </archive>
    </configuration>
</plugin>

Tiếp theo, bạn mở terminal lên tại vị trí đặt project của bạn là thực hiện lần lượt các lệnh sau :

mvn clean package
spark-submit --class main.Main --master local[2] target/SparkTutorials-V1.jar 

Trong đó main.Main là đường dẫn tới Class chứa hàm main của bạn, local[2] theo mình được hiểu là Spark sẽ sử dụng 2 nhân để run project thì phải (cái này mình cũng không rõ lắm). còn cuối cùng target/SparkTutorials-V1.jar là đường dẫn tới file jar của bạn ( file jar build ra bằng maven sẽ được để trong thư muc target).
Xem toàn bộ mã nguồn của bài này trên github của mình ở đây nha : https://github.com/trannguyenhan/parquet-io-spark (Nếu bạn thấy hay cho mình 1 sao vào repo nha).

Xem thêm : Chia sẻ và review môn học trường đại học Bách Khoa Hà Nội


All Rights Reserved

Viblo
Let's register a Viblo Account to get more interesting posts.