eclipse建立maven工程讀取hdfs檔案傳送郵件
1、在maven下新建maven工程
2、編寫程式碼
package WorkFlow.Mail; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FSDataInputStream; import org.apache.hadoop.fs.FSDataOutputStream; import org.apache.hadoop.fs.FileStatus; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; public class MailSend { public static void main(String[] args) throws IOException{ MailSend mail = new MailSend(); mail.readFile(); mail.sendmail(); } private void readFile(){ try { Configuration conf = new Configuration(); FileSystem file = FileSystem.get(conf); String path ="/tmp/daily_mail/CN/sql/"; String Outputpath ="/tmp/daily_mail/CN/hql/"; FileStatus[] lstStatus = file.listStatus(new Path(path)); for (FileStatus status : lstStatus) { FSDataInputStream inputStream = file.open(status.getPath()); BufferedReader br = new BufferedReader(new InputStreamReader(inputStream)); String sql = ""; String line = null; while (null != (line = br.readLine())) { sql += line; sql += " "; } System.out.println(sql); String name = Outputpath + status.getPath().getName(); FileSystem OutPutfile = FileSystem.get(conf); OutPutfile.deleteOnExit(new Path(name)); OutPutfile.createNewFile(new Path(name)); FSDataOutputStream Outputfs = OutPutfile.append(new Path(name)); Outputfs.write(sql.getBytes()); Outputfs.flush(); Outputfs.close(); } } catch (Exception ex) { ex.printStackTrace(); } } private void sendmail() throws IOException{ Configuration conf = new Configuration(); FileSystem file = FileSystem.get(conf); String path ="/tmp/daily_mail/CN/sql/"; String Outputpath ="/tmp/daily_mail/CN/hql/"; String sql = ""; FileStatus[] lstStatus = file.listStatus(new Path(path)); for (FileStatus status : lstStatus) { FSDataInputStream inputStream = file.open(status.getPath()); BufferedReader br = new BufferedReader(new InputStreamReader(inputStream)); String line = null; while (null != (line = br.readLine())) { sql += line; sql += " "; } } Mail.send("Work Flow send mail Test", sql); } }
Mail.class
package WorkFlow.Mail; import java.io.File; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Properties; import javax.mail.BodyPart; import javax.mail.Message; import javax.mail.Multipart; import javax.mail.Session; import javax.mail.Transport; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeBodyPart; import javax.mail.internet.MimeMessage; import javax.mail.internet.MimeMultipart; public class Mail { private MimeMessage mimeMsg; private Session session; private Properties props; private String username; private String password; private Multipart mp; public Mail(String smtp) { setSmtpHost(smtp); createMimeMessage(); } public void setSmtpHost(String hostName) { System.out.println("設定系統屬性:mail.smtp.host=" + hostName); if (props == null) { props = System.getProperties(); } props.put("mail.smtp.host", hostName); } public boolean createMimeMessage() { try { System.out.println("準備獲取郵件會話物件!"); session = Session.getDefaultInstance(props, null); } catch (Exception e) { System.out.println("獲取郵件會話錯誤!" + e); return false; } System.out.println("準備建立MIME郵件物件!"); try { mimeMsg = new MimeMessage(session); mp = new MimeMultipart(); return true; } catch (Exception e) { System.out.println("建立MIME郵件物件失敗!" + e); return false; } } /*定義SMTP是否需要驗證*/ public void setNeedAuth(boolean need) { System.out.println("設定smtp身份認證:mail.smtp.auth = " + need); if (props == null) props = System.getProperties(); if (need) { props.put("mail.smtp.auth", "true"); } else { props.put("mail.smtp.auth", "false"); } } public void setNamePass(String name, String pass) { username = name; password = pass; } /*定義郵件主題*/ public boolean setSubject(String mailSubject) { System.out.println("定義郵件主題!"); try { mimeMsg.setSubject(mailSubject); return true; } catch (Exception e) { System.err.println("定義郵件主題發生錯誤!"); return false; } } /*定義郵件正文*/ public boolean setBody(String mailBody) { try { BodyPart bp = new MimeBodyPart(); bp.setContent("" + mailBody, "text/html;charset=GBK"); mp.addBodyPart(bp); return true; } catch (Exception e) { System.err.println("定義郵件正文時發生錯誤!" + e); return false; } } /*設定發信人*/ public boolean setFrom(String from) { System.out.println("設定發信人!"); try { mimeMsg.setFrom(new InternetAddress(from)); //發信人 return true; } catch (Exception e) { return false; } } /*定義收信人*/ public boolean setTo(String to) { if (to == null) return false; System.out.println("定義收信人!"); try { mimeMsg.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to)); return true; } catch (Exception e) { return false; } } /*定義抄送人*/ public boolean setCopyTo(String copyto) { if (copyto == null) return false; try { InternetAddress[] iaToList = new InternetAddress().parse(copyto); mimeMsg.setRecipients(Message.RecipientType.CC, iaToList); return true; } catch (Exception e) { return false; } } /*傳送郵件模組*/ public boolean sendOut() { try { mimeMsg.setContent(mp); mimeMsg.saveChanges(); Session mailSession = Session.getInstance(props, null); Transport transport = mailSession.getTransport("smtp"); transport.connect((String) props.get("mail.smtp.host"), username, password); transport.sendMessage(mimeMsg, mimeMsg.getAllRecipients()); System.out.println("傳送成功!"); transport.close(); return true; } catch (Exception e) { System.err.println("郵件失敗!" + e); return false; } } /*呼叫sendOut方法完成傳送*/ private static boolean sendAndCc(String smtp, String from, String to, String copyto, String subject, String content, String username, String password) { Mail theMail = new Mail(smtp); theMail.setNeedAuth(true); // 驗證 if (!theMail.setSubject(subject)) return false; if (!theMail.setBody(content)) return false; if (!theMail.setTo(to)) return false; if (!theMail.setCopyTo(copyto)) return false; if (!theMail.setFrom(from)) return false; theMail.setNamePass(username, password); if (!theMail.sendOut()) return false; return true; } public static void send(String title, String content) { String smtp = "smtp.mxhichina.com"; String from = "
[email protected]"; String to = "[email protected]"; String copyto = "[email protected]"; String subject = title; String username = "[email protected]"; String password = "Lin198717"; sendAndCc(smtp, from, to, copyto, subject, content, username, password); // the time of mail Date d = new Date(); SimpleDateFormat df = new SimpleDateFormat("yyyyMMddhhmmsss"); System.out.println(df.format(d)); } }
3、引用的第三方jar包
4、pom.xml檔案
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>WorkFlow</groupId>
<artifactId>Mail</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>Mail</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-mapreduce-client-core</artifactId>
<version>2.3.0</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-hdfs</artifactId>
<version>2.3.0</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-common</artifactId>
<version>2.3.0</version>
</dependency>
<dependency>
<groupId>org.apache.hive</groupId>
<artifactId>hive-jdbc</artifactId>
<version>1.1.1</version>
</dependency>
<dependency>
<groupId>jdk.tools</groupId>
<artifactId>jdk.tools</artifactId>
<version>1.6</version>
<scope>system</scope>
<systemPath>C:/Program Files/Java/jdk1.8.0_73/lib/tools.jar</systemPath>
</dependency>
</dependencies>
</project>
5、maven clean,maven package
打包大小為8k,在hdfs中執行
yarn jar WorkFlow.Mail.MailSend
能夠正常執行,並且傳送郵件
6、打包所有的dependency jar包,在pom.xml檔案中新增將jar包打入到jar包中
<build>
<plugins>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<appendAssemblyId>false</appendAssemblyId>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<archive>
<manifest>
<mainClass>WorkFlow.Mail.MailSend</mainClass>
</manifest>
</archive>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
上傳到hdfs伺服器,執行java -jar Mail.jar,出現如下錯誤
使用yarn jar Mail-0.0.1.jar能夠正常執行。
7、將hdfs-site.xml和core-site.xml檔案打包到jar包中,修改pom.xml檔案
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>WorkFlow</groupId>
<artifactId>Mail</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>Mail</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-mapreduce-client-core</artifactId>
<version>2.3.0</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-hdfs</artifactId>
<version>2.3.0</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-common</artifactId>
<version>2.3.0</version>
</dependency>
<dependency>
<groupId>org.apache.hive</groupId>
<artifactId>hive-jdbc</artifactId>
<version>1.1.1</version>
</dependency>
<dependency>
<groupId>jdk.tools</groupId>
<artifactId>jdk.tools</artifactId>
<version>1.6</version>
<scope>system</scope>
<systemPath>C:/Program Files/Java/jdk1.8.0_73/lib/tools.jar</systemPath>
</dependency>
</dependencies>
<build>
<resources>
<resource>
<directory>conf/</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
</resources>
<plugins>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<appendAssemblyId>false</appendAssemblyId>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<archive>
<manifest>
<mainClass>WorkFlow.Mail.MailSend</mainClass>
</manifest>
</archive>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
java -jar Mail-001.jar能夠正常執行,yarn jar Mail-001.jar 也能夠正常執行
並且在jar包中包含xml檔案
8、將依賴jar包拷貝到工程的lib資料夾中
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>prepare-package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/lib</outputDirectory>
<overWriteReleases>false</overWriteReleases>
<overWriteSnapshots>false</overWriteSnapshots>
<overWriteIfNewer>true</overWriteIfNewer>
</configuration>
</execution>
</executions>
</plugin>
相關推薦
eclipse建立maven工程讀取hdfs檔案傳送郵件
1、在maven下新建maven工程 2、編寫程式碼 package WorkFlow.Mail; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamR
eclipse建立maven工程
1.在eclipse中用maven建立專案,右鍵new>>Maven Project 2.點選next繼續 3.點選next繼續,選擇maven-archetype-webapp, 4.點選next繼續,填寫Group id和Artifac
CentOS下eclipse建立maven工程失敗
在linux下使用eclipse建立maven工程失敗,如下圖。但我在windows環境下,eclipse建立成功了。無論是eclipse,還是maven的配置基本都是相同的。。鬱悶不解 1、檢查maven環境變數 【/etc/profile】檔案中已定義環境變數 MAVEN_HO
eclipse建立maven工程時,出現目錄結構不全,只有一個resources
之前一直用的idea,想熟悉下eclipse開發maven工程,今天建立了幾個maven springmvc試了下,發現總是目錄不全,就網上各種查詢,試了很多方法 ,最後終於成功,原因在於maven的jar包配置出了問題,maven自帶的jdk版本和自己裝的不一樣,修改下就可
eclipse建立maven工程沒有src/main/resources資料夾和web.xml使用3.1的dtd時工程有錯誤的問題
1.有時候我們建立maven時會發現沒有src/main/resources檔案, 解決方法:右鍵工程———>>build path——>>選擇Source——>>Add Folder——>>勾選webapp——>&g
eclipse匯入maven工程pom.xml檔案不起作用
匯入硬碟中的maven工程時要確保import的是maven選項下的Existing Maven Pojects。 接著要替換maven倉庫的地址為自己定義的地址 window->preference->maven->user settings
如何使用eclipse建立Maven工程及其子模組
2012-02-23 14:51154人閱讀評論(0)收藏舉報 1,首先建立一個父類工程 子模組繼承父類工程 並在父類工程的pom.xml檔案中定義引入的jar及其版本號 子模組可以引用 2 建立api子模組,主要放置SDK 3
Eclipse建立Maven工程時出現的Java Build path 問題
問題描述 使用eclipse建立Maven工程時,出現如下錯誤: Description Resource Path Location Type Build path
Eclipse建立Maven工程,pom.xml,dependency報錯的解決辦法
是否配置了maven環境 如果沒有,先配置maven環境 Mac配置maven環境 1⃣️ tar.gz archive:是在Linux、MacOsX上使用的。 2⃣️ zip arc
maven的安裝、路徑配置、修改庫檔案路徑和eclipse中的配置、建立maven工程。
maven的安裝、路徑配置、修改庫檔案路徑與在eclipse中的配置一、maven的安裝解壓apache-maven-3.3.9-bin.zip到自己的資料夾下,解壓後路徑如:D:\Program\apache-maven-3.3.9。二、路徑配置右鍵“計算機”,選擇“屬性”
【Eclipse】-NO.163.Eclipse.1 -【Eclipse springboot 1.x 建立maven工程初始化報錯】
Style:Mac Series:Java Since:2018-09-10 End:2018-09-10 Total Hours:1 Degree Of Diffculty:5 Degree Of Mastery:5 Practical Level:5 Desired Goal:5 Arc
eclipse 建立maven 專案 動態web工程完整示例 maven 整合springmvc整合mybatis
接上一篇: eclipse maven工程自動新增依賴設定 maven工程可以線上搜尋依賴的jar包,還是非常方便的 但是有的時候可能還需要設定下 eclipse不能線上搜尋jar包 報錯 如果搜尋不到內容,或者有報錯資訊(index downloads are disabled
eclipse 建立maven 專案 動態web工程完整示例
需求表均同springmvc案例 此處只是使用maven 注意,以下所有需要建立在你的eclipse等已經整合配置好了maven了,說白了就是新建專案的時候已經可以找到maven了 沒有的話需要安裝maven 1.新建maven專案,如果不在上面,請到other裡面去找一下 2,進入maven專
【Maven】Eclipse下Maven工程多模組繼承和聚合建立
轉自:http://www.tuicool.com/articles/NnmiyiU 使用Maven對專案進行管理的時候,多模組的繼承和聚合是必不可少的,本文簡要說明一下在eclipse IDE下建立多模組工程。 1.Maven多模組的聚合 一個Maven工程
eclipse建立maven專案(動態web工程)完整示例
需求表均同springmvc案例 此處只是使用maven 注意,以下所有需要建立在你的eclipse等已經整合配置好了maven了,說白了就是新建專案的時候已經可以找到maven了 沒有的話需要安裝maven 1.新建maven專案,如果不在上面,請到other裡
eclipse 建立maven 專案 動態web工程完整示例(親測,很好)
轉自:http://www.cnblogs.com/noteless/p/5213075.html 需求表均同springmvc案例 此處只是使用maven 注意,以下所有需要建立在你的eclipse等已經整合配置好了maven了,說白了就是新建專案的時候已經可以找
Eclipse建立Maven專案時候缺失WEB-INF等檔案?
用Eclipse開發時候,如果建立一個maven專案,會發現webapp資料夾中缺少web-inf、web.xml等資料夾和檔案。兩種解決方式:一、配置動態web模組專案右鍵點選properties在Dynamic Web Module選項中配置好到webapp下的路徑,勾選
使用Eclipse建立web工程
做的 -1 new 窗口 finally spf log png cnblogs 使用Eclipse建立web工程(用jsp文件做例子) 第一步:創建java web工程,打開Eclipse,點擊 File==》new==》Dynamic web Porject 第二步:在
IDEA編寫wordcount,讀取hdfs檔案,執行在Spark叢集例子
前期:已安裝好hadoop叢集和spark叢集,hadoop2.6.5,spark2.3.1,jdk1.8. scala2.1.0 第一步:在idea編寫scala程式,並且要打包(pom檔案的build標籤中配置好maven打包程式碼,可以定義主類也可以在提交的時候再定義){補充:可以在s
eclipse建立maven管理Spark的scala以及eclipse的Maven配置
說明,由於spark是用scala寫的。因此,不管是在看原始碼還是在寫spark有關的程式碼的時候,都最好是用scala。由於我個人以前是純粹的Pythoner,一直使用的都是PyCharm,然而最近換了新工作後,由於各種原因,要麼使用付費軟體,要麼使用免費軟體,所以,我被迫選擇了eclip