Presto что это за программа и нужна ли она

Внедрение механизма запросов в реальном времени и применение Facebook Presto

1. Что такое Престо

Что такое Facebook presto? После того, как Facebook создал артефакт HIVE, другой распределенный механизм запросов в реальном времени с языком SQL в качестве интерфейса может быстро и интерактивно запрашивать данные уровня петабайта. Он поддерживает стандарт ANSI SQL, включая запросы, агрегирование, JOIN и оконные функции. В дополнение к созданию Facebook, он также широко используется в Китае, например, JD.com и Meituan. Для студентов со слабым английским языком вы можете посетить этот китайский сайт перевода, созданный Jingdong:http://prestodb-china.com/Только эта версия 0.100, а последняя версия сейчас 0.156.

Presto — это механизм распределенных SQL-запросов с открытым исходным кодом, подходящий для интерактивного анализа и запросов. Объем данных поддерживает байты от GB до PB.

Presto разработан и написан для решения проблемы интерактивного анализа и скорости обработки коммерческого хранилища данных размером с Facebook.

С чего начинается учет в СБИС Presto

Что это может сделать?

Presto поддерживает онлайн-запрос данных, включая Hive, Cassandra, реляционную базу данных и запатентованное хранилище данных. Запрос Presto может объединять данные из нескольких источников данных и анализировать по всей организации.

Presto ориентируется на потребности аналитиков, и они ожидают, что время отклика составляет от 1 секунды до нескольких минут. Presto решает дилемму анализа данных, используя быстрые и дорогие бизнес-решения или медленные «бесплатные» решения, которые потребляют много оборудования.

Кто это использует?

Facebook использует Presto для интерактивных запросов к нескольким внутренним хранилищам данных, включая хранилище данных объемом 300 ПБ. Каждый день более 1000 сотрудников Facebook используют Presto, выполняют запросы более 30 000 раз, а общее количество данных сканирования превышает 1 ПБ.

Ведущие интернет-компании, включая Airbnb и Dropbox, используют Presto.

2. Престо структура

Presto

Presto также является распределенной системой, которую необходимо развернуть на каждом узле данных, она включает координатора и несколько сотрудников:

  • Координатор: интерфейс доступа, синтаксический анализ операторов SQL, генерация планов запросов, распределение задач и т. Д.
  • Работник: отвечает за чтение и запись данных и выполнение планов запросов

Стоит отметить, что Presto абстрагирует уровень хранения данных в виде плагина. Он называется соединителем, таким как Cassandra Connector, Hive Connector, MySQL Connector и т. Д. Можно заметить, что по умолчанию он предоставляет не только соединители для связанных с Hadoop компонентов, Предоставляет соединители для СУБД, таких как Mysql, Postgresql и т. Д. В то же время его можно легко разработать с помощью пользовательских соединителей для достижения цели расширения, применимой к различным уровням хранения данных.

Presto — автоматизация ресторанов, кафе, столовых

Presto предоставляет следующие типы интерфейсов:

  • Командная строка Presto
  • Драйвер JDBC

3. Предварительная установка

Presto поддерживает только развертывание систем Linux. Его рабочие узлы также можно использовать в качестве узлов-координаторов, но Presto рекомендует развертывать узлы-координаторы независимо и развертывать их на независимых серверах, чтобы избежать снижения производительности.
Тестовая среда для этой статьи — это установка и тестирование кластерной среды Hadoop на основе CDH 5.5. Версия Presto: 0.152.3 Версия Presto для установки JDK должна требовать: 1.8 Метод обеспечения безопасности — независимый узел координатора + метод рабочего узла

1. Распакуйте Presto в каждый рабочий узел и узел координатора.

tar -xzvf presto-server-0.152.3.tar.gz

2. Настройте node.properties
node.properties содержит информацию о конфигурации узла Presto и расположение каталога etc / node.properties после распаковки. Такие как:

node.environment = myprestoproduction # Все имена кластеров одинаковы, тестирование не может быть смешанным регистром node.id = ffffffff-ffff-ffff-ffff-fffffffffff1 # Идентификатор каждого узла Presto должен быть различным. node.data-dir = / usr / local / presto-server-0.152.3 / data #presto каталог хранения данных, расположенный в каталоге понимающего программного обеспечения

3. Настройте jvm.config
jvm.config Этот файл конфигурации передает имя, каждый должен знать, что настроено. Содержание следующее:

-server -Xmx8G -XX:+UseG1GC -XX:G1HeapRegionSize=32M -XX:+UseGCOverheadLimit -XX:+ExplicitGCInvokesConcurrent -XX:+HeapDumpOnOutOfMemoryError -XX:OnOutOfMemoryError=kill -9 %p

4. Предварительная настройка: config.properties
Файл конфигурации config.properties используется для настройки рабочих параметров Presto, здесь координатор и узел Workder необходимо настраивать отдельно.
Конфигурация узла координатора:

координатор = true # Укажите здесь, чтобы работать в качестве узла координатора node-scheduler.include-coordinator=false http-server.http.port=8089 query.max-memory = 50GB # Общая память доступна для одного запроса query.max-memory-per-node = 1GB # Один запрос на максимальную доступную память одного узла discovery-server.enabled = true # Служба обнаружения используется для службы состояний узлов кластера Presto discovery.uri=http://master:8089

Конфигурация рабочего узла:

coordinator=false http-server.http.port=8089 query.max-memory=50GB query.max-memory-per-node=1GB discovery.uri=http://master:8089

  • 1
  • 2
  • 3
  • 4
  • 5
  • В этот момент вы можете запустить Presto как обычно. Но вы можете только взглянуть на Presto без какого-либо Connector, поэтому давайте сначала сконфигурируем Hive Connector.

5. Предварительно настроенный Hive Connector
Создайте новый файл: etc / catalog / hive.properties, содержимое которого:

connector.name = hive-cdh5 # В зависимости от версии Hadoop значения могут быть следующими: hive-hadoop1, hive-hadoop2, hive-cdh4, hive-cdh5 hive.metastore.uri = thrift: // master: 9083 # URL-адрес службы мета-магазина hive hive.config.resources=/etc/hadoop/conf/core-site.xml,/etc/hadoop/conf/hdfs-site.xml

6. Запустите Presto
После такой большой настройки мы наконец-то можем перейти к этапу запуска Presto. Этот шаг прост. Просто выполните команду запуска на каждом узле:

bin/launcher start

  • 1
  • Стоит отметить, что версия JDK, установленная CDH, равна 1.7, а версия, требуемая Presto, — 1.8, поэтому необходимо изменить файл модуля запуска и добавить параметр переменной среды JAVA, чтобы переопределить параметр по умолчанию 1.7.

7. Подключитесь к Presto
Подключитесь к Presto с помощью командной строки:
Но как вам может быть так легко подключиться, вам нужно скачать файл: presto-cli-0.156-executetable.jar, затем переименовать его в presto и увеличить разрешения для исполняемого файла ( chmod + x), а затем выполните команду подключения:

./presto —server master:8089 presto:default> SELECT * FROM system.runtime.nodes; node_id | http_uri | node_version | coordinator | state —————————————+—————————+—————+————-+——— ffffffff-ffff-ffff-ffff-fffffffffff2 | http://192.168.5.202:8089 | 0.152.3 | false | active ffffffff-ffff-ffff-ffff-fffffffffff1 | http://192.168.5.200:8089 | 0.152.3 | true | active ffffffff-ffff-ffff-ffff-fffffffffff3 | http://192.168.5.203:8089 | 0.152.3 | false | active ffffffff-ffff-ffff-ffff-fffffffffff4 | http://192.168.5.204:8089 | 0.152.3 | false | active (4 rows) Query 20161108_101627_00016_3i6da, FINISHED, 2 nodes Splits: 2 total, 2 done (100.00%) 0:00 [4 rows, 300B] [9 rows/s, 727B/s]

Системный разъем — это разъем, который поставляется с Presto и не требует настройки. Содержит информацию об узле Presto, информацию о конфигурации и информацию о метриках.

Читайте также:
Тестирование программы это что

5. Используйте Presto для запроса данных таблицы HIVE

1. Подключитесь к Presto с помощью командной строки и укажите использование коннектора HIVE:

./presto-cli-0.107-jd-executable.jar —server master:8089 —catalog hive —schema default # Укажите базу данных по умолчанию, подключенную к HIVE по умолчанию

2. Запросите данные таблицы HIVE, затем вы можете запросить данные HIVE, используя стандартный SQL, такой как

presto:default> desc sample_08; Column | Type | Comment ————-+———+——— code | varchar | description | varchar | total_emp | integer | salary | integer | (4 rows) Query 20161108_145619_00028_3i6da, FINISHED, 2 nodes Splits: 2 total, 2 done (100.00%) 0:00 [4 rows, 258B] [11 rows/s, 726B/s] presto:default> select * from sample_08 limit 3; code | description | total_emp | salary ———+————————+————+——— 00-0000 | All Occupations | 135185230 | 42270 11-0000 | Management occupations | 6152650 | 100310 11-1011 | Chief executives | 301930 | 160440 (3 rows) Query 20161108_145632_00029_3i6da, FINISHED, 2 nodes Splits: 2 total, 2 done (100.00%) 0:02 [823 rows, 45KB] [439 rows/s, 24KB/s]

1. При использовании Presto для запроса типа данных Decimal в формате Parquet возникает исключение, и вам необходимо преобразовать его вручную:

presto:default> desc test_decimal; Column | Type | Comment ———-+—————+——— dec_col | decimal(2,0) | (1 rows) Query 20161108_151431_00066_3i6da, FINISHED, 2 nodes Splits: 2 total, 2 done (100.00%) 0:00 [5 rows, 358B] [14 rows/s, 1.02KB/s] presto:default> select dec_col from test_decimal limit 1; Запрос пропал (сервер перезапущен?) # Здесь есть исключение presto:default> select cast(dec_col as integer) from test_decimal limit 1; _col0 ——- 1 (1 row) Query 20161108_151456_00068_3i6da, FINISHED, 1 node Splits: 2 total, 2 done (100.00%) 0:00 [7.28K rows, 118KB] [19.5K rows/s, 314KB/s]

2. Другое дело, что информация об исключениях Presto слишком лаконична, многиеQuery is goneОчень трудно устранить неисправности, такие как:

presto:default> explain select * from sample_08; Query is gone (server restarted?)

3. Проблемы совместимости, такие как:

presto:default> select * from sample_tabpart limit 10; Query 20161109_031436_00013_3i6da failed: Unsupported Hive type char(4) found in partition keys of table default.sample_tabpart # Не поддерживает раздел KEY типа CHAR

Хотя Facebook presto не разрабатывался в течение долгого времени, а его версия невысока, текущая версия богата функциями и достигла требований к эффективности запросов, близких к реальному времени, и очень гибка. Presto будет важным выбором для инструментов запросов в реальном времени.

Источник: russianblogs.com

Знакомство с Presto — высокоскоростной веб-фреймворк на Ruby

Знакомство с Presto — высокоскоростной веб-фреймворк на Ruby

2012-03-13 в 10:17, admin , рубрики: framework, ruby, метки: framework, ruby

Краткий экскурс

Меня часто спрашивают — чего ради ещё один фреймворк если есть Rails.
Я часто отвечаю — затем что поезд не решает те задачи которые решает автомобиль.

Ещё чаще меня спрашивают — чего ради Presto если есть Sinatra.
Также часто я отвечаю — потому что автомобили отличаются в плане скорости, комплектации и удобства.

Как работается?

В плане использования, Presto предлагает в полне стандартную логику создания приложений и такой же стандартный набор инструментов — контролеры, роутинг, редиректы, рендеринг etc.
В основном работается очень легко. Всё организовано натурально и просто. Легко подаётся пониманию.

В чём разница?

Из особенностей, в первую очередь стоит отметить высокую скорость обработки запросов.
Эталонная скорость Presto — от 4000 до 5000 запросов в секунду, в зависимости от железа.
Что такое эталонная скорость и в чём она измеряется?
Очень просто — это скорость «Hello World» приложения.

С точки зрения фреймворка, все приложения одинаковы, с единственной разницей — сколько времени приложение тратит на обработку запроса.
И поскольку «Hello World» приложение тратит менее одного процента, эту скорость можно считать эталонной.
А скорость любого приложения это эталонная скорость разделить на время которое приложение тратит на обработку запроса.

Теперь, предположим что ваш сайт обращается к БД и рендерит HTML, тратя при этом 50% времени.
Если вы используете Presto, 50% от 4000-5000 это 2000-2500, так что примерная скорость вашего сайта будет составлять около 2000 запросов в секунду.

Представьте какая скорость у вашего сайта если вы используете фреймворк с эталонной скоростью 100 запросов в секунду.

Другой важной особенностью являются Slices.
Любой модуль содержавший контролеры можно вмонтировать в любое приложение и будет работать везде одинаково.

Можно один раз написать скажем блог или форум и использовать его на любом Presto сайте.

Дальше — лучше …
Оформив слайс как гем мы получаем распределённый модуль с возможностью синхронизации.

Многоуровневое конфигурирование

Из практичных приятностей выделяется возможность многоуровневого конфигурирования.
Любой контролер можно конфигурировать на уровне контролера или же на уровне слайса в котором он состоит.

Так например если ваш форум мигрирует с /forums/ на /forum/, всё что вам нужно сделать это перемонтировать форум слайс под /forum/.

Или же если нужно добавить миддлеваре, или поменять путь к темплэйтам, или даже template engine — всё это делается как на уровне контролера так и на уровне слайса.
Притом что конфиг контролера является персональным и имеет приоритет перед общим слайсовым конфигом.

Ещё стоит отметить что Presto организован в виде множества Api.
В том смысле что инструменты не просто разбросаны внутри контролеров(или даже внутри Object класса!), а организованы по собственным Api.

Всё что связанно с HTTP находиться под http методом — http.params , http.session , http.cookies etc.

Всё что связанно с рендером находиться под view методом — view.render , view.render_partial , view.render_layout etc.

Таким образом, Presto добавляет всего-лищь 3 метода в ваши контролеры — http , view и node .

Другой практичной особенностью является Sandbox.

Sandbox позволяет запретить доступ к session и cookies, а также запретить redirect, forward и halt.
Можно также дать доступ к session и cookies в режиме только чтение.

Таким образом, верстальщик, которому вы не совсем доверяете, не сможет исполнять код который будет читать/отправлять куки/сессии пользователей,
или переправлять на другие адреса.

К no-logic templates это конечно не относиться.

Inline Testing

Ну и в конце стоит отметить такую диковинку как Inline Testing.

Суть в том что можно писать тесты «не отходя от кассы»…
Тест для любого акшиона можно писать прямо в контролере, рядом с самим акшионом.

Спорный вопрос, но таким образом сохраняется визуальный контакт между логикой приложения и тестовыми действиями.

Читайте также:
Что за программа router scan

То есть, когда вы пишете тесты, текущая логика физически находится перед вами, а не в вашем воображении.
Впрочем, это сугубо субъективный подход. Лично я, за последние полгода так привык к такому подходу что использую стандартный метод лишь в крайних случаях.

Приступаем к освоению — Install

Для начала надо установить Ruby версии 1.9.2 или выше.
Или же JRuby 1.9 mode.

Потом в терминале пишем:

$ gem install presto

Presto имеет лишь две зависимости — Rack и Tilt.
Так что процесс установки обычно занимает меньше минуты.

Controllers

Создать контролер в Presto также просто как создать и расширить класс в Ruby.
Надо просто создать класс, включить Presto::Api и адресовать через http.map

class MyController include Presto::Api http.map end

Routing

Routing в Presto начинается с http.map

http.map устанавливает корневой адрес для всех акшионов в данном контролере.

В примере выше, http.map вызван без параметров. Это означает что контролер будет обслуживать корневой адрес сайта — /
То есть http.map идентичен http.map «/»

Типичный пример — News обслуживает /news/

class News include Presto::Api http.map :news def index # some logic end def edit # some logic end end

Теперь News обслуживает 3 адреса:

  • /news/
  • /news/index
  • /news/edit

Но http.map не является окончательным словом в роутинге.
Также как http.map устанавливает корневой адрес для акшионов в данном контролере,
аддрес на котором монтирован слайс устанавливает корневой адрес для контролеров в данном слайсе.

Скажем у нас такой слайс:

module Forum class Posts include Presto::Api http.map :posts # actions end class Users include Presto::Api http.map :users # actions end end
app = Presto::App.new

Монтируем форум в корневой адрес:

app.mount Forum

теперь Forum будет обслуживать все акшионы Posts и Users под /posts/ и /users/ соответственно.

Но мы также можем вмонтировать форумный слайс под любой другой адрес.

app.mount Forum, ‘/forum’

теперь Forum будет обслуживать все акшионы Posts и Users под /forum/posts/ и /forum/users/ соответственно.

Но и это ещё не всё.
Есть ещё возможность обслуживания множества корневых адресов одним и темже контролером.
Об этом в параграфе Canonical.

Canonical Routing

Допустим ваши новости мигрировали с /Novosti/ на /news/
Но вам нужно ещё какое-то время поддерживать новости на старом адресе.
Можно конечно сделать copy/paste, но в условиях нынешних тенденций это не то не целесообразно — это просто дико.
Presto предлагает решение по элегантнее — canonical routes.
Просто задаём http.map множество параметров, каждый из которых является каноническим адресом,
кроме первого разумеется, который является корневым адресом.

class News include Presto::Api http.map :news, :Novosti def index http.canonical?.to_s end end

Теперь News будет обслуживать /Novosti/ также как и /news/

Обратите внимание на def index , он содержит http.canonical? ,
который возвращает текущий канонический адрес если запрос сделан с канонического адреса или же nil если запрос сделан с корневого адреса.
В данном контексте, если ввести в браузер /news/, ответом будет пустая строка — http.canonical? возвращает nil потому что /news/ является корневым адресом.
Если же ввести /Novosti/, ответом будет /Novosti/

Сanonical работает как на уровне контролера так и на уровне слайса.

module Forum class Posts include Presto::Api http.map :posts # actions end class Users include Presto::Api http.map :users # actions end end app = Presto::App.new app.mount Forum, ‘/forum’, ‘/Forums’

Теперь Forum будет обслуживать следующие адреса:

  • /forum/posts/
  • /forum/users/
  • /Forums/posts/
  • /Forums/users/

Наверное вы задались вопросом — зачем же нельзя просто монтировать один и тот же слайс на множество адресов.
Можно, но не целесообразно.
— лишняя писанина.
— лишняя память для обслуживания ещё одного слайса.
— http.canonical? не будет работать так что вы не будете знать находитесь ли вы под рутом или под каноником.

Actions

Добавить акшион также легко как создать очередной метод в Ruby.

Пример: создаём 2 акшиона — index и edit

class MyController include Presto::Api http.map def index # some logic end def edit # some logic end end

Теперь MyController обслуживает 3 адреса:

Действительно легко, но ведь акшионы не всегда такие тривиальные.
Как например обслуживать такой адрес: /forum/posts/top-100 или /forum/users/online/active-only
Про это детально рассказывается в параграфе Mapping.

Mapping

Идея позаимствована из Ramaze. Я использовал Ramaze фреймворк на протяжении долгово времени и нахожу превосходной идею формирования URL из имён методов.

Например, def edit; end соответствует /edit в строке браузера.
А def users_online; end соответствует /users_online
Но def users__online; end соответствует /users/online
То есть __ преобразовывается в /

По умолчанию, у Presto 3 правила преобразования:

  • «____» => «.»,
  • «___» => «-«,
  • «__» => «/»,

Пример: def users___online; end соответствует /users-online

Пример: def users____html; end соответствует /users.html

Вы конечно можете изменить данные правила или даже добавить новые.
Для этого используется http.path_rules на уровне контролера или слайса.

Пример: преобразовываем «_» в «/» на уровне контролера

class News include Presto::Api http.map :news http.path_rules «_» => «/» def read_active end end

Теперь read_active будет обслуживать /news/read/active адрес.

Пример: преобразовываем «_» в «-» на уровне слайса

module Ctrl; end class Ctrl::News include Presto::Api http.map :news def search_popular end end class Ctrl::Articles include Presto::Api http.map :articles def show_latest end end app = Presto::App.new app.mount Ctrl do http.path_rules «_» => «-» end

Теперь Ctrl::News#search_popular будет обслуживать /news/search/popular адрес.
Также как Ctrl::Articles#show_latest будет обслуживать /articles/show/latest адрес.

Хорошо, но это всё статические имена. Как же на счёт динамических параметров?
Например /news/delete/100
Об этом в следующем параграфе.

Parametrization

Параметризация в Presto натуральна и проста.
HTTP параметры становятся аргументами для текущего акшиона.

Допустим у нас такой контролер:

class News include Presto::Api http.map :news def edit id return «ID Passed: #» end end

Если в браузере набираем /news/edit/100, Presto сделает такой вызов — News#edit( 100 )
и в ответ получим «ID Passed: 100»

Если же набираем /news/edit/, вызов будет таким: News#edit , и так как #edit не может быть вызван без параметров,
в ответ получим ошибку «404, Page Not Found»

Для того чтобы акшион работал и без ID, надо дать параметру значение по умолчанию:

class News include Presto::Api http.map :news def edit return «ID Passed: #» end end

Читайте также:
Что за программа cobian backup 11 gravity

Если в браузере набираем /news/edit/, в ответ получим «ID Passed: 0»

Если же набираем /news/edit/100, в ответ получим «ID Passed: 100»

Можно также передать/принимать N-ое количество параметров:

class Users include Presto::Api http.map :users def details id, *columns return «ID: # | Columns: # » end end

Если в браузере набираем /users/details/100/name/email/status, в ответ получим «ID: 100 | Columns: name, email, status»

Если же набираем /users/details/100/, в ответ получим «ID: 100 | Columns: „

/users/details/ вернёт ошибку “404, Page Not Found»

То есть если Ruby метод будет работать с данными аргументами, будет работать и HTTP запрос.

При таком раскладе, можно задать любую комбинацию HTTP параметров, единственное правило — чтобы акшион с этой комбинацией работал.

Alias

Как мы уже говорили, контролеры и слайсы могут обслуживать множество адресов.
Но как же на счёт акшионов? Что если я хочу отображать идентичный контент при запросе разных акшионов.
Всё очень просто — используем http.alias

class Users include Presto::Api http.map :users def details end http.alias :details, :about, :features end

Теперь /users/details будет обслуживать 2 дополнительных адреса — /users/about и /users/features

Стандартное «Hello World» приложение

Создаём app.rb file

require ‘presto’ class HelloWorld include Presto::Api http.map def index «Hello World» end end app = Presto::App.new app.mount HelloWorld app.run server: :Thin, Port: 7890

image

Файл

image

Результат в браузере

image

Тест на производительность

На этом заканчиваем первую часть знакомства.

В следующих частях узнаем про rendering, content_type, hooks, cache, middleware, error handling, authentication, sandbox и многое другое.

Источник: www.pvsm.ru

PRESTO — это просто!

Туда и обратно. Скоро сказка сказывается, да не скоро дело делается. Особенно в области городского транспорта, неизменной темы для критики, бурных дискуссий, а также противостояния политических интересов и реальных потребностей жителей. Тем не менее, шаги прогресса ощущаются и в этой сфере…

После долгих задержек и неурядиц электронная система оплаты проезда становится повседневной реальностью. Kарточка PRESTO превращается из диковинки в такую же непременную вещь, как ключи или мобильный телефон.
А в светлом будущем в автобусах, трамваях и на станциях метро окончательно исчезнут кассы и терминалы для проездных билетов.

Что же касается настоящего, то преимущества PRESTO пока остаются не совсем понятными довольно немалому количеству пассажиров. Среди них — и наши читатели, которые обращаются в редакцию с разными вопросами по этому поводу. И хотя на сайте www.prestocard.ca дается подробная информация, с картинками и музыкой, попробуем все же поделиться ею на более понятном читателям языке.

Например, многие еще не уверены, что карточка PRESTO позволяет теперь совершать несколько пересадок в любом направлении, в течение 2-х часов после начала поездки.

Именно так, отвечает нам вебсайт, начиная с 26 августа этого года. При каждой следующей пересадке в автобус, метро или трамвай вы должны еще раз приложить карточку к зеленой штуковине у входа — это Card Reader, который фиксирует факт оплаты и время. И если вы укладываетесь в 2-часовой лимит, дополнительных денег с вас не возьмут.
PRESTO можно пополнять лично или онлайн, предусмотрена также функция Autoload, когда деньги регулярно переводятся с вашего счета. Кстати говоря, специальный линк на сайте поможет вам контролировать снятие денег с карточки.

«А если пользуешься услугами ТТС постоянно, — спрашивает читатель, — нужно ли по-прежнему покупать отдельную карточку Metropass, или PRESTO включает все? И как это работает?»

Еще один проездной не нужен, объясняют нам. Программа предусматривает те же возможности, и по той же цене, только заложенные в PRESTO — это Monthly Pass, ежемесячный, и 12 Month Pass, то есть позволяющий заранее, со скидкой, оплатить годовой проезд. Количество поездок — не ограничено. Приобрести такие карточки можно в отдельных (обратите внимание!) аптеках сети Shoppers Drug Mart, в автоматах, установленных на входе в некоторые (!) станции метро, а также онлайн, на www.prestocard.ca.

Конечно, наших пожилых читателей интересует, как купить карточку со скидкой, аналогично обыкновенному проездному, пока еще доступным талончикам или ушедшим в историю токенам.
К сожалению, автомат на станции не способен подтвердить ваш возраст. Поэтому карточку придется покупать в тех же Shoppers Drug Mart, с предъявлением водительских прав или другого официального документа, идентифицирующего вашу личность.

Есть и другой вариант — отправиться на станцию метро Davisville, где работает TTC Customer Service, и взять карточку там.

Те, кто пользуется услугами Wheel-Trans, должны при посадке приложить карточку к ручному сканеру, который подносит к вам водитель. А пересаживаясь на метро или автобус ТТС, отметиться еще раз, деньги за это не снимаются.
Скидка на проезд полагается также школьникам. А вот дети 6-12 лет пока что могут ездить бесплатно, но для того, чтобы войти на станцию метро, им все равно надо иметь при себе карточку PRESTO, приобретенную заранее.

Для студентов, начиная с ноября, станут доступными ежемесячные проездные. Сложнее обстоит дело с так называемым Downtown Express Bus, проезд в котором требует двойной оплаты. И потому, даже воспользовавшись PRESTO, вам придется доплатить наличными, талончиком или предъявив обычный Metropass. Пока что неразбериха возникает и при поездках за черту города, например, в York Region или Миссиссагу. Хотя на сайте объявлено, что система включает в себя возможность проезда в GTA — районе Большого Торонто, GTHA — районе Гамильтона, и Оттаве, с этим есть определенные сложности.

Так, если вы едете на автобусе ТТС на север от Steeles, использовать PRESTO не рекомендуется. Продолжайте доплачивать талончиками или GTA Weekly Pass. Можно загрузить в свой смартфон новую аппликацию YRT Pay. Оплата при посадке обеспечивает возможность обратной поездки, но только если вы уложились в те же самые 2 часа. Короче, до полностью светлого будущего с PRESTO нам еще жить и жить.

И напоследок — предупреждение: прочитав эту статью, не спешите зайти на вебсайт, упомянутый выше. PRESTO предупреждает, что по техническим причинам он не будет действовать с 10 утра пятницы до вечера воскресенья. А утром в понедельник, 15 октября — добро пожаловать!

Источник: www.russianexpress.net

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru