第一周實習總結

2021-09-05 02:14:44 字數 4345 閱讀 7921

shell

hadoop

pig有時候需要建立帶有空格的資料夾,雖然這不是乙個好的習慣,但是偶爾會遇到。用的最多的是很多時候需要進入帶有空格的資料夾,如"a b"是乙個資料夾名。

建立:

mkdir

"a b"

mkdir

'a b'

mkdir a\ b

進入:

cd

"a b"

cd'a b'

cd a\ b

由上可見,需要在帶有空格的資料夾名前面加上引號(單引號或者雙引號),另一種方法是在空格前面加\,\的意思是後面還有字元的意思。

切記,直接輸名字是無法操作成功的,如已經建立了資料夾"a b",直接終端輸入cd a b會出現沒有a資料夾的錯誤。而如果沒有建立"a b"資料夾,使用mkdir a b,會建立兩個資料夾,乙個名字為a,乙個為b。

linux 技巧:讓程序在後台可靠執行的幾種方法

我們經常會碰到這樣的問題,用 telnet/ssh 登入了遠端的 linux 伺服器,執行了一些耗時較長的任務, 結果卻由於網路的不穩定導致任務中途失敗。如何讓命令提交後不受本地關閉終端視窗/網路斷開連線的干擾呢?

場景:

如果只是臨時有乙個命令需要長時間執行,什麼方法能最簡便的保證它在後台穩定執行呢?

hangup 名稱的來由

在 unix 的早期版本中,每個終端都會通過 modem 和系統通訊。當使用者 logout 時,modem 就會結束通話(hang up)**。 同理,當 modem 斷開連線時,就會給終端傳送 hangup 訊號來通知其關閉所有子程序。

解決方法:

我們知道,當使用者登出(logout)或者網路斷開時,終端會收到 hup(hangup)訊號從而關閉其所有子程序。因此,我們的解決辦法就有兩種途徑:要麼讓程序忽略 hup 訊號,要麼讓程序執行在新的會話裡從而成為不屬於此終端的子程序

nohup 的用途就是讓提交的命令忽略 hangup 訊號。讓我們先來看一下 nohup 的幫助資訊:

nohup(1)                        user commands                        nohup(1)

name

nohup - run a command immune to hangups, with output to a non-tty

synopsis

nohup command [arg]...

nohup option

description

run command, ignoring hangup signals.

--help display this help and exit

--version

output version information and exit

可見,nohup 的使用是十分方便的,只需在要處理的命令前加上 nohup 即可,標準輸出和標準錯誤缺省會被重定向到 nohup.out 檔案中。一般我們可在結尾加上"&"來將命令同時放入後台執行,也可用">filename 2>&1"來更改預設的重定向檔名。

nohup 示例

[root@pvcent107 ~]# nohup ping www.ibm.com &

[1] 3059

[root@pvcent107 ~]# ps -ef |grep 3059

root 3059 984 0 21:06 pts/3 00:00:00 ping www.ibm.com

root 3067 984 0 21:06 pts/3 00:00:00 grep 3059

[root@pvcent107 ~]#

nohup ./*.sh parameters > test.log 2>&1 &
每天乙個linux命令:tail

tail 命令從指定點開始將檔案寫到標準輸出.使用tail命令的-f選項可以方便的查閱正在改變的日誌檔案,tail -f filename會把filename裡最尾部的內容顯示在螢幕上,並且不斷重新整理,使你看到最新的檔案內容.。

linux >和》的區別

>> 是追加內容

> 是覆蓋原有內容

示例:

bogon:desktop wenxuechao$ echo

'abc'

> test.txt

bogon:desktop wenxuechao$ echo

'123'

>> test.txt

執行效果,第一句命令會在桌面建立個test.txt的檔案,並且將abc寫到檔案中。

第二句命令,會在檔案下方,再次寫入內容。

#!/bin/bash

startdate=

$1#2018-12-01

period=

$2#19

enddate=

`date -d "$startdate

$period days" +"%y-%m-%d"

`echo

"runing period: $startdate -- $enddate"

rundate=

$startdate

while

(( $period>=0))

doecho

"-----------------------start running $rundate----------------------"

echo -e "\n"

#pig -p logdate=$rundate smartbanner.pig

echo

"------------------------finish running $rundate------------------------"

echo -e "\n\n"

rundate=

`date -d "$rundate 1 days" +"%y-%m-%d"

` let

"period--"

done

chmod +x ./*.sh

./*.sh

sh指令碼執行報錯:/bin/sh^m:bad interpreter: no such file or directory

解決方案:

關於shell指令碼提示no such file or directory的解決辦法和原因

linux執行shell指令碼提示no such file or directory錯誤的解決辦法

vim filename

:set fileencoding #檢視檔案編碼

:set fileformat=unix #在vim命令模式下改變檔案格式

:x!#儲存文件

hadoop fs -ls

hadoop fs -text */part* > local file

原創apache-pig的一些基礎概念及用法總結(2)/

「scalar has more than one row in the output」錯誤的乙個原因

遇到了這個錯誤?我來演示一下如何復現這個錯誤。

假設有兩個檔案:

[root@localhost ~]$ cat a.txt 

1 23 4

[root@localhost ~]$ cat b.txt

3 45 6

現在我們來做乙個join:

a = load 'a.txt' as (col1: int, col2: int)

;b = load 'b.txt' as (col1: int, col2: int)

;c = join a by col1, b by col1;

d = foreach c generate a.col1;

dump d;

這段**是必然會fail的,錯誤提示為:

org.apache.pig.backend.executionengine.execexception: error 0: scalar has more than one row in the output. 1st : (1,2), 2nd :(3,4)

乍一看,似乎**簡單得一點問題都沒有啊?其實仔細一看,「a.col1」的寫法根本就是錯誤的,應該寫成「a::col1」才對,因為你只要 describe 一下 c 的schema就明白了:

c:

實習的第一周

本週開始,我們專業就進入實習了。這週是實習的第一周,也是複習的第一周。第一周的實習主要是學習,但大部分時間我們都在複習。不過這週的複習效果很不好,說實話,現在都還不知道該如何複習,做題的時候想看知識點,看知識點的時候想做題,結果啥都沒弄成。現在想想,大部分的時間都浪費在糾結怎麼複習上了,唉!考試將近...

第一周總結

第一周學習總結 第一周,我們有學習,計算機的發展,起源,計算機的各種進化,還有計算機的概念,計算機的語言,計算機的組成這些等等。讓我深刻的意識到這是很龐大的一門課程,同時也對我們接下來要學習的課程充滿了期待。對於我自己來說,第一周的學習我還是覺得挺不錯的,挺開心的,能認識到這麼多的朋友,這麼多的知識...

第一周總結

第一周這麼快就過去了,剛開學第一周,沒能擠出很多時間來學習,週六看了一天的課件,把老師給的三個課件看了個遍,線段樹講解和 裡都有很多題目,通過講解更徹底的了解了一下線段樹的原理,線段樹構造,區間查詢,單點更新,區間更新都更具體的講解了一下。後面還有常用的一些模版,也研究了一下,熟悉了具體的原理。主要...