Как изменить автоматически сгенерированный код при создании нового класса в Eclipse

Прежде всего, это, вероятно, не очень хорошая идея, потому что вы не получаете никакой дополнительной информации, но вы привязываетесь к фиксированной схеме (то есть вам нужно знать, сколько стран вы ожидаете, и, конечно же, дополнительная страна означает изменение кода)

Сказав это, это проблема SQL, которая показана ниже. Но если вы полагаете, что это не слишком «программное обеспечение» (серьезно, я это слышал !!), то вы можете отсылать первое решение.

Решение 1:

def reshape(t):
    out = []
    out.append(t[0])
    out.append(t[1])
    for v in brc.value:
        if t[2] == v:
            out.append(t[3])
        else:
            out.append(0)
    return (out[0],out[1]),(out[2],out[3],out[4],out[5])
def cntryFilter(t):
    if t[2] in brc.value:
        return t
    else:
        pass

def addtup(t1,t2):
    j=()
    for k,v in enumerate(t1):
        j=j+(t1[k]+t2[k],)
    return j

def seq(tIntrm,tNext):
    return addtup(tIntrm,tNext)

def comb(tP,tF):
    return addtup(tP,tF)


countries = ['CA', 'UK', 'US', 'XX']
brc = sc.broadcast(countries)
reshaped = calls.filter(cntryFilter).map(reshape)
pivot = reshaped.aggregateByKey((0,0,0,0),seq,comb,1)
for i in pivot.collect():
    print i

Теперь решение 2: Конечно, лучше, поскольку SQL является правильным инструментом для этого

callRow = calls.map(lambda t:   

Row(userid=t[0],age=int(t[1]),country=t[2],nbrCalls=t[3]))
callsDF = ssc.createDataFrame(callRow)
callsDF.printSchema()
callsDF.registerTempTable("calls")
res = ssc.sql("select userid,age,max(ca),max(uk),max(us),max(xx)\
                    from (select userid,age,\
                                  case when country='CA' then nbrCalls else 0 end ca,\
                                  case when country='UK' then nbrCalls else 0 end uk,\
                                  case when country='US' then nbrCalls else 0 end us,\
                                  case when country='XX' then nbrCalls else 0 end xx \
                             from calls) x \
                     group by userid,age")
res.show()

данных:

data=[('X01',41,'US',3),('X01',41,'UK',1),('X01',41,'CA',2),('X02',72,'US',4),('X02',72,'UK',6),('X02',72,'CA',7),('X02',72,'XX',8)]
 calls = sc.parallelize(data,1)
countries = ['CA', 'UK', 'US', 'XX']

Результат:

Из 1-го решения

(('X02', 72), (7, 6, 4, 8)) 
(('X01', 41), (2, 1, 3, 0))

Из второго решения:

root  |-- age: long (nullable = true)  
      |-- country: string (nullable = true)  
      |-- nbrCalls: long (nullable = true)  
      |-- userid: string (nullable = true)

userid age ca uk us xx 
 X02    72  7  6  4  8  
 X01    41  2  1  3  0

Пожалуйста, дайте мне знать, если это работает, или нет:)

Best Ayan

33
задан Click Upvote 1 February 2009 в 21:50
поделиться

5 ответов

Изрезывание является проблемой форматирования, в то время как комментарии являются шаблонной проблемой.

шаблоны находятся в Окно-> Предпочтения-> Java-> Стиль кода-> Шаблоны Кода . Просмотрите всех их и ищите вещи, которые требуется изменить.

Средство форматирования сложно. Вы находите его под Окно-> Предпочтения-> Java-> Стиль кода-> Средство форматирования . Существуют тонны опций там, но я просто отвечу на Ваш вопрос.

  • Шаблоны-> Комментарии-> Методы-> Редактирование и удаляет все
  • Средство форматирования-> Редактирование-> Вкладка Фигурных скобок-> Изменение, какие ситуации Вы хотите
  • Шаблоны-> Код-> Тело Метода-> Редактирование и удаляете все
51
ответ дан 27 November 2019 в 18:16
поделиться

Для конфигурирования его переходят в: окно-> предпочтения-> Java-> стиль кода-> кодирует шаблоны

1
ответ дан 27 November 2019 в 18:16
поделиться

Также удостоверьтесь, что Вы проверяете "Средство форматирования кода использования" в Java> Редактор> Шаблоны

0
ответ дан 27 November 2019 в 18:16
поделиться

Eclipse имеет партия из параметров конфигурации. Смотрите в Windows | Предпочтительное диалоговое окно (или Предпочтительное панорамирование Eclipse на OSX).

, Если Вы роете достаточно глубоко - Вы найдете опции под Java | Стиль кода.

0
ответ дан 27 November 2019 в 18:16
поделиться

The indention is a formatting issue while the comments is a template issue.

The templates are in Window -> Preferences -> Java -> Code Style -> Code Templates. Browse all of them and look for the things you would like to change.

The Formatter is a little bit more complicated. You find it under Window -> Preferences -> Java -> Code Style -> Formatter. There are tons of options there but I'll just answer your question.

* Templates -> Comments -> Methods -> Edit and delete everything
* Formatter -> Edit -> Braces Tab -> Change which situations you want
* Templates -> Code -> Method Body -> Edit and delete everything
0
ответ дан 27 November 2019 в 18:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: